QT moc笔记

QT moc笔记

STEP1
编译UI文件,生成[UI头文件]
命令行:
" $(QTDIR)\bin\uic.exe "   - " .\GeneratedFiles\ui_$(InputName).h "   " $(InputPath) "
输出
" .\GeneratedFiles\ui_$(InputName).h "
为了方便说明,将这里的“ui_$(InputName).h”简称为[UI头文件]。

输出的[UI头文件]定义了MOC的自定义生成步骤
命令行:
" $(QTDIR)\bin\moc.exe "    " $(InputPath) "   - " .\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp "   - DQT_CORE_LIB  - DQT_GUI_LIB  - DQT_LARGEFILE_SUPPORT  - DQT_THREAD_SUPPORT  - DUNICODE  - DWIN32  - I " $(QTDIR)\include\. "   - I " $(QTDIR)\include\QtCore\. "   - I " $(QTDIR)\include\QtGui\. "   - I " .\. "   - I " .\GeneratedFiles\$(ConfigurationName)\. "   - I " .\GeneratedFiles\. "
输出:
" .\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp "
为了方便说明,将这里的“moc_$(InputName).h”简称为[MOC代码文件]。

STEP2
编译[UI实现文件],输出[MOC代码文件]。
[UI实现文件]一方面继承自QT的UI相关类,例如QWidget、QMainWindow,另一方面包含了[UI头文件],而这个头文件由于自定义了生成步骤,则会同时输出[MOC代码文件]。这个[MOC代码文件]和[UI实现文件],分别实现了UI类的2部分:QT的MOC机制和基本的C++类实现。这很巧妙,分2部分来定义一个标准的C++类,其中一部分是编译了另外一部分后生成的。
这个[MOC代码文件]很简单,就是Q_OBJECT宏定义的实现代码部分。这部分在官方帮助文档“Meta-Object System”中有详细说明。而MOC文件的工作方式在官方帮助文档“Using the Meta-Object Compiler (moc)”中有详细说明。

STEP3
编译[MOC代码文件],到此已编译完了UI类需要的所有定义代码。

你可能感兴趣的:(QT moc笔记)