MacOS - Qt之moc,uic,rcc命令的使用

发布时间 2023-12-15 10:34:38作者: [BORUTO]

一、MOC


从qt继承而来的类只要用了关键字 Q_OBJECT,都必须生成其对应的moc文件,命令如下

moc.exe myclass.h -o mac_myclass.cpp

其中myclass.h中有类有Q_OBJECT属性。在vs项目中只需要添加mac_myclass.cpp文件即可。

二、UI


虽然不使用designer来设计界面,但在编译一个demo项目时都会用*.ui文件,这时得先将其用uic.exe进行转化

uic.exe app.ui -o ui_app.h

其中app.ui是用designer设计好的界面文件, ui_app.h是生成的头文件。然后在c++项目中#include "ui_app.h"即可。

三、RCC


 rcc 工具的两种用途:


1、生成独立的二进制资源文件 *.rcc


对于太大的图片、音频、视频等文件,不适合集成到目标程序内部,可以放到操作系统文件路径,或者单独编译成外挂资源 *.rcc 。举例来说,myresource.qrc 包含了很多图片和视频,没法编译成目标程序内嵌资源时,可以打开 Qt 命令行,进入 myresource.qrc 所在的文件夹,执行命令:

rcc -binary myresource.qrc -o myresource.rcc

rcc 会把 myresource.qrc 里面描述的所有图片、视频等文件,都压缩打包,生成一个二进制的 myresource.rcc 文件,这个 myresource.rcc 包含了所有的资源,这样程序发布时就不需要带一堆乱七八糟的碎文件了,一个 myresource.rcc 搞定。

那么代码中如何使用 myresource.rcc 呢?需要在 main 函数开始的位置注册这个独立的二进制资源文件:

QResource::registerResource("/path/myresource.rcc");


2、应用程序内嵌资源


如果希望一个资源描述文件 application.qrc 在程序编译时内嵌到目标程序里,需要在 *.pro 文件里加一句话:

RESOURCES += application.qrc

qmake 会自动根据这句话,为 application.qrc 添加编译脚本,其编译过程如下图所示:


 

macOS下:

生成moc临时文件:      moc 原文件.h -o moc_目标文件.cpp

生成ui临时文件:          uic 原文件.ui -o ui_目标文件.h

生成qrc临时文件:        rcc 原文件.qrc -o qrc_目标文件.cpp