首页 > 其他分享 >QT工具uic、moc、rcc

QT工具uic、moc、rcc

时间:2024-06-10 20:45:12浏览次数:24  
标签:文件 uic QT ui 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。

创建好项目后生成的.pro文件就是构建所需要的文件,qmake是一个可执行文件,对整个项目进行Build时,QT Creator根据.pro文件使用qmake.exe生成Makefile,QT安装的目录下Tools\mingw730_64\bin下有一个名为mingw32-make.exe,该exe文件将Makefile进行编译链接最后输出到指定目录。Makefile用于帮助决定大型程序的哪些部分需要重新编译。参考链接:https://makefiletutorial.com/

标签:文件,uic,QT,ui,moc,rcc
From: https://www.cnblogs.com/qianxiaohan/p/18241000

相关文章

  • QT鼠标拖拽方式
    创建按钮,然后添加图片因为按钮是直接继承了ui类的,所以在ui界面直接把按钮进行拖拽就好给按钮添加上图片QPixmap和image的区别:QPixmap:QPixmap主要用于在屏幕上显示图像,通常用于GUI界面中的图像显示。QPixmap优化了对显示设备的访问,因此在显示图像时具有更好的性能。QPi......
  • QT 图片从屏幕桌面拖进窗口
    设置在Widget构造写接受拖拽事件函数这样才能使用后面的函数重写鼠标拖拽函数都是继承的widget的函数实现内部方法Drag部分://URLs是统一资源定位符(UniformResourceLocators)的复数形式。在计算机术语中,URLs用来标识和定位互联网上的资源,如网页、图片、视频等。它由若......
  • 2024.06.09 与显哥在办公室Mock Interview复盘
    我已刷题3月,现正准备着下周一Weride的电面;今日回办公室与显哥进行mockinterview,一起做题LC30。耗时50分钟而我没有做出,结束后与显哥复盘,发现以下问题:没有充分理解题意没有进行时空复杂度分析,事先确定求解的复杂度没有打草稿后再写代码在对代码进行解释时,不足够high-level;容......
  • PyQT5之QSS基础/子控件选择器
    fromPyQt5.QtWidgetsimport*importsysclassBasicQCSS(QWidget):def__init__(self):super().__init__()self.setWindowTitle("QSS样式/子控件选择器")btn1=QPushButton(self)btn1.setText("按钮1")b......
  • Easymocap 运行
    环境依赖https://amir-yazdani.github.io/post/openpose/dockerfiledockerrundockerrun-d-p8080:80-m4g--nameCONTAINER_NAME--hostnameCONTAINER_INNER_HOSTNAME-v/home/user/data:/data-eVAR=1--rmmy_image-d:后台运行-v:挂载host的目录到guest目录......
  • 【QT5】<总览五> QT多线程、TCP/UDP
    文章目录前言一、QThread多线程二、QT中的TCP编程1.TCP简介2.服务端程序编写3.客户端程序编写4.服务端与客户端测试三、QT中的UDP编程1.UDP简介2.UDP单播与广播程序前言承接【QT5】<总览四>QT常见绘图、图表及动画。若存在版权问题,请联系作者删除!一、QThre......
  • Qt 读取excel文件
    在Qt中,你可以使用QtXlsxWriter库来对Excel文件进行操作。QtXlsxWriter是一个开源库,用于在Qt应用程序中生成和编辑Excel文件。以下是如何使用QtXlsxWriter库在Qt中对Excel文件进行操作的步骤: 添加QtXlsxWriter库到你的Qt项目中。可以通过在.pro文件中添加以下行来包含QtXls......
  • PyQT5窗口样式设置
    importsysfromPyQt5.QtCoreimport*fromPyQt5.QtGuiimport*fromPyQt5.QtWidgetsimport*classWindowPattern(QMainWindow):def__init__(self,*args,**kwargs):super().__init__(*args,**kwargs)self.resize(500,300)self......
  • PyQT5之设置窗口控件风格
    设置窗口控件风格QApplication.setStyle(...)窗口可以显示三种风格:['windowsvista','Windows','Fusion']importsysfromPyQt5.QtCoreimport*fromPyQt5.QtGuiimport*fromPyQt5.QtWidgetsimport*#print(QStyleFactory.keys())classWindow......
  • Qt 子线程调用connect/QMetaObject::invokeMethod 不调用槽函数问题
    在使用invokeMethod进行跨线程调用的时候,发现invokeMethod在某些情况下不能正常调用.经过查各种资料发现invokeMethod底层的调用逻辑是通过Qt事件循环处理,所以子线程需要显示的调用QEventLoop::exec()或者QCoreApplication::processEvents()执行信号槽处理.首先有一个QDemoObje......