Qt中的UIC、MOC、RCC宏定义说明

在Qt6新建工程的时候,CMakeLists.txt中会默认带有UIC,MOC,RCC的3个宏定义。

cpp 复制代码
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

uic(User Interface Compiler),用户界面编译器,将根据.ui文件生成相应的.h文件,例如根据mainwindow.ui生成ui_mainwindow.h。

moc(Meta-Object Compiler),元对象编译器,用于处理QT拓展的C++语法。

rcc(Resource Compiler),rcc工具用于在构建过程中将资源嵌入到Qt应用程序中。

1.UIC工具

.ui本质上就是一个.xml文件,uic工具读取.ui文件,根据xxx.ui文件生成相对应的头文件,生成的格式为:ui_xxx.h

2.MOC工具

在Qt框架中,MOC(Meta-Object Compiler)是一个至关重要的工具,它负责处理Qt特有的元对象系统(Meta-Object System)的相关代码。MOC是一个预处理器,它扫描包含Q_OBJECT宏的C++源文件,生成额外的C++代码,这些代码包含了元对象系统的实现细节,如信号、槽的连接机制、动态属性等。

moc的工作原理

扫描源文件:MOC首先扫描包含Q_OBJECT宏的C++源文件。这个宏是启用元对象系统特性的关键,它告诉MOC这个类需要被特殊处理。

生成元对象代码 :对于每个包含Q_OBJECT宏的类,MOC会生成一个额外的C++源文件。这个源文件包含了该类的元对象定义,包括信号、槽、属性、枚举等的元数据。

编译和链接:生成的元对象代码文件会被编译成目标代码,并最终链接到最终的可执行文件或库中。这样,当Qt应用程序运行时,它就可以利用这些元数据来实现信号与槽的连接、动态属性访问等功能。

3.RCC工具

rcc工具用于在构建过程中将资源嵌入到Qt应用程序中。它通过生成一个C++源文件来工作,该文件包含Qt资源(.qrc)文件中指定的数据。

例如,一个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,大致过程如下所示:

相关推荐
一然明月17 分钟前
Qt QML 锚定(Anchors)全解析
java·数据库·qt
一只爱学习的小鱼儿25 分钟前
使用QT编写粒子显示热力图效果
开发语言·qt
大树学长27 分钟前
【QT开发】Redis通信相关(一)
redis·qt
笨笨马甲28 分钟前
Qt 人脸识别
开发语言·qt
山上三树1 小时前
Qt QObject介绍
开发语言·qt
山上三树1 小时前
QObject、QWidget、Widget三者的关系
qt
坚定学代码2 小时前
qt c++ 局域网聊天小工具
c++·qt·个人开发
笨笨马甲3 小时前
Qt network开发
开发语言·qt
mengzhi啊20 小时前
Qt Designer UI 界面 拖的两个 QLineEdit,想按 Tab 从第一个跳到第二个
qt
笨笨马甲1 天前
Qt MQTT
开发语言·qt