在qt designer下设计出界面ui,然后通过uic生成头文件.h;之后通过C++类继承之后编写的头文件,使用moc,命令行生成.h文件。
moc的主要作用是在预编译阶段去除qt化,意思就是讲C++代码中的qt代码转化成C++编译器可以懂的语言(即C++)。
去个例子,我设计了一个名为a.ui的UI文件,通过uic a.ui -o gui_a.h,生成了ui对应的头文件,然后编写a.h其中的类继承了gui_a.h的类。之后使用moc来进行去QT化。使用的命令行为:
Rem IncrediBuild_AllowRemote //表示使用增量build,意思就是在不修改的时候不会重新build
Rem IncrediBuild_OutputFile moc_a.cpp
moc -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"c:\Qt\4.8.5\include\QtCore" -I"c:\Qt\4.8.5\include\QtGui" -I"c:\Qt\4.8.5\include" -I"." -I"c:\Qt\4.8.5\include\ActiveQt" -I"debug" -Ic:\Qt\4.8.5\mkspecs\win32-msvc2010 -D_MSC_VER=1500 -DWIN32 a.h -o moc_a.cpp
在上一部分命令行中的
c:\Qt\4.8.5\include\为QT安装之后头文件所在的目录。
这就是如何在vs2010下使用qt之moc