Qt cmake add_subdirectory 后无法使用子模块的资源(如图片、翻译文件)的解决方案

在 CMakeLists.txt 中 add_subdirectory 导入自模块后,无法访问子模块里的资源。

尝试配置 CMAKE_AUTORCC 无效:

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

使用 qt5_add_resources 导入资源无效:

cmake 复制代码
qt5_add_resources(QRC_FILES "Res/MyRes.qrc") 

将资源文件配置为公共无效:

cmake 复制代码
set_source_files_properties(${QRC_FILES} PROPERTIES PUBLIC TRUE)

清理构建目录重新构建也无效。

此时有点抓狂了吧,别急,往下看一招解决:


原因:静态的资源需要初始化才能使用。假设你的资源文件名是 MyRes.qrc,那么在使用它前需要加一行 Q_INIT_RESOURCE(MyRes); 才能使用。

一般直接加在 main 函数开始的地方:

cpp 复制代码
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    
    // 初始化资源
    Q_INIT_RESOURCE(MyRes);
    
    // 现在可以正常使用资源了
    
    return app.exec();
}
相关推荐
Wenweno0o19 小时前
0基础Go语言Eino框架智能体实战-chatModel
开发语言·后端·golang
chenjingming66620 小时前
jmeter线程组设置以及串行和并行设置
java·开发语言·jmeter
cch891820 小时前
Python主流框架全解析
开发语言·python
不爱吃炸鸡柳20 小时前
C++ STL list 超详细解析:从接口使用到模拟实现
开发语言·c++·list
十五年专注C++开发20 小时前
RTTR: 一款MIT 协议开源的 C++ 运行时反射库
开发语言·c++·反射
Momentary_SixthSense20 小时前
设计模式之工厂模式
java·开发语言·设计模式
‎ദ്ദിᵔ.˛.ᵔ₎20 小时前
STL 栈 队列
开发语言·c++
勿忘,瞬间20 小时前
数据结构—顺序表
java·开发语言
张張40820 小时前
(域格)环境搭建和编译
c语言·开发语言·python·ai
weixin_4235339920 小时前
【Windows11离线安装anaconda、python、vscode】
开发语言·vscode·python