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();
}
相关推荐
冒险的豆子5 分钟前
JS 原型链 通俗易懂 解释说明(类比 关系)
开发语言·javascript·原型模式
破茧蝴蝶9 分钟前
Selenium4 Python 页面白屏监控方案
开发语言·python
隐退山林15 分钟前
JWT令牌技术
java·开发语言·java-ee
ESDWAN1 小时前
跨境网络延迟、抖动和丢包有什么区别?如何判断业务影响
开发语言·网络·计算机网络·php
Code_Solitude1 小时前
C语言分支结构练习题(华师版)
c语言·开发语言
从小白到软工1 小时前
4-1 指针
c语言·开发语言·数据结构·经验分享·ai编程
Pniubi1 小时前
agent处理封号怎么解决误封问题
开发语言·python
.Hypocritical.1 小时前
【Java 进阶】泛型深度解析|泛型类、泛型方法、通配符、类型擦除、PECS 原则
java·开发语言·泛型
VX_bysjlw9851 小时前
基于PHP的论坛系统设计与实现 35136-计算机毕设原创(免费领源码+带部署教程)
开发语言·php·apache·laravel·thinkphp·phpstudy·wampserver
忆~遂愿1 小时前
电影照片散在硬盘里不好找?我用群晖+Plex整理成可远程访问的家庭媒体库
开发语言·php