QT工具uic、moc、rcc
QT中的moc、uic、rcc
在学习QT的过程中接触到了moc、uic、rcc这几个名词
- moc(Meta-Object Compiler),元对象编译器,用于处理QT拓展的C++语法
- uic(User Interface Compiler),用户界面编译器,将根据.ui文件生成相应的.h文件,例如根据mainwindow.ui生成ui_mainwindow.h
- rcc(Resource Compiler),rcc工具用于在构建过程中将资源嵌入到Qt应用程序中
moc.exe、uic.exe、rcc.exe、qmake的路径F:\QT\5.12.12\mingw73_64\bin
moc工具
moc工具读取一个C++头文件,如果该头文件中存在宏Q_OBJECT,则它会生成一个C++源文件(.cpp),其中包含这些类的元对象代码,元对象(meta object)就是描述另一个对象结构的对象
关于moc的官方文档:https://doc.qt.io/qt-6/moc.html
uic工具
.ui本质上就是一个.xml文件,uic工具读取.ui文件,根据xxx.ui
文件生成相对应的头文件,生成的格式为:ui_xxx.h
关于uic的官方文档:https://doc.qt.io/qt-5/uic.html
rcc工具
rcc工具用于在构建过程中将资源嵌入到Qt应用程序中。它通过生成一个C++源文件来工作,该文件包含Qt资源(.qrc)文件中指定的数据。
关于rcc的官方文档:https://doc.qt.io/qt-6/rcc.html
一个hello.ui执行过程,hello.ui是通过QT设计模式生成的图像界面文件,本质上是xml文件,ui文件通过uic工具生成ui_hello.h,hellouiwidget.h包含了ui_hello.h;由于hellouiwidget.h文件中存在宏Q_OBJECT,因此moc工具根据hellouiwidget.h生成包含元对象的cpp文件moc_hellouiwidget.cpp;main.cpp中包含hellouiwidget.h文件,这3个cpp文件通过g++编译器生成.o文件,最后通过链接生成可执行文件exe,大致过程如下所示:
参考链接:https://docs.oldtimes.me/c.biancheng.net/view/3962.html
QT项目的构建过程
QT5可以使用qmake(QT6弃用qmake)或者CMake创建makefile,make命令工具根据makefile文件对指定的文件进行编译和链接;QT Creator创建项目时可以选择不同的构建系统(build system),我在学习过程中一直使用的qmake。
![](https://img2023.cnblogs.com/blog/2126010/202406/2126010-20240610203509841-195847754.png)
创建好项目后生成的.pro文件就是构建所需要的文件,qmake是一个可执行文件,对整个项目进行Build时,QT Creator根据.pro文件使用qmake.exe生成Makefile,QT安装的目录下Tools\mingw730_64\bin下有一个名为mingw32-make.exe,该exe文件将Makefile进行编译链接最后输出到指定目录。Makefile用于帮助决定大型程序的哪些部分需要重新编译。参考链接:https://makefiletutorial.com/