当前位置: 首页 > article >正文

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

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

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


http://www.kler.cn/a/532116.html

相关文章:

  • 5.角色基础移动
  • Chapter 6 -Fine-tuning for classification
  • 介绍一下Mybatis的Executor执行器
  • 蓝桥与力扣刷题(234 回文链表)
  • 2024-我的学习成长之路
  • Android学习19 -- 手搓App
  • 半导体器件与物理篇5 mosfet及相关器件
  • 狗狗睡觉打呼噜正常吗?
  • 《海丰县蔡氏简介》--海丰县蔡姓宗支源流及始迁祖概述--海丰县各乡镇简介
  • VM虚拟机下macOS中的无法打开身份不明开发者的文件
  • 图的基本术语——非八股文
  • excel实用问题:提取文字当中的数字进行运算
  • 如何安装PHP依赖库 更新2025.2.3
  • 蓝桥杯真题 - 整数删除 - 题解
  • 《深入实现事件发布-订阅模式:从基础到优化》
  • 【番外】lombok在IDEA下失效的解决方案
  • DeepSeek本地部署的一些问题记录
  • Linux:基础IO(二.缓冲区、模拟一下缓冲区、详细讲解文件系统)
  • 浏览器查询所有的存储信息,以及清除的语法
  • 20250204在Ubuntu22.04下配置荣品的RK3566开发板的Android13的编译环境
  • 网站快速收录:如何优化网站本地搜索排名?
  • 昆明理工大学2025通信复试真题及答案-通信核心课程综合
  • ORB-SLAM2源码学习:KeyFrame.cc③: void KeyFrame::AddConnection更新连接权重
  • 字节序与Socket编程
  • 想品客老师的第十一天:模块化开发
  • Java线程创建与管理:继承、实现、Callable与线程池