QT资源文件的两种使用方式(CMake)
通过Qt资源文件管理图片资源,qss样式表等。有两种方式使用Qt资源文件。
第一种:将资源内容编译到可执行文件中,实现了图标等资源的封装,可达到防止恶意篡改的目的。
第二种:使用rcc工具将资源文件qrc编译成rcc文件,然后在代码中动态加载。
1:如何将资源文件qrc编译到可执行程序中
第一步:生成资源文件qrc
1:打开Qt designer,随便新建一个窗体(打开窗体后才能新建出资源文件)
2:打开资源浏览器,点击编辑资源图标
3:点击新建资源文件
4:增加前缀
5:添加文件
Qrc文件就创建好了
第二步:在CMakeLists文件中添加资源文件处理项目
将qrc文件编译到可执行文件中。
qt5_add_resources (RCC_SOURCES my_resource.qrc)
ADD_EXECUTABLE (test_resource ${project_SOURCES} ${project_HEADERS_MOC} ${RCC_SOURCES})
第三步:在使用资源文件之前将初始化资源文件
Q_INIT_RESOURCE(my_resource);//注意这里传入的参数为资源文件名去掉后缀,例如我们的资源文件名叫my_resource.qrc,那么初始化的时候就传my_resource
注意事项:
1,如果想生成静态或者动态链接库文件,需要在生成的库的代码中调用一下Q_INIT_RESOURCE(my_resource);这时候会将资源内容打包到库文件中。
2:vs2015和部分QT版本不匹配,导致Q_INIT_RESOURCE无法完成初始化,已发现QT5.9.0的VS2015版本就出现了版本不匹配的问题。
2:使用rcc工具将资源文件qrc编译成rcc文件,然后动态加载使用
1:打开qt命令行工具
2:使用rcc工具将qrc文件编译成rcc文件
rcc 资源文件名.qrc --binary -o 资源文件名.rcc
3:在使用资源文件之前,先加载资源文件rcc
QString rcc_filename = “my_resource.rcc”;
QResource::registerResource(rcc_filename);
QIcon icon(":/icon/money_1.png");
this->setWindowIcon(icon);
参考链接:https://blog.csdn.net/xiezhongyuan07/article/details/79396680
其它问题:
Qresource版本不匹配导入资源失败的时候的替代方案
将图标等资源文件按照二进制格式编译到可执行文件中,最后从二进制文件中还原图标(rcc的手动实现)。