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();
}
相关推荐
郭涤生17 分钟前
不同主机之间网络通信-以太网连接复习
开发语言·rk3588
山居秋暝LS22 分钟前
【无标题】RTX00安装paddle OCR,win11不能装最新的,也不能用GPU
开发语言·r语言
卢锡荣26 分钟前
单芯通吃,盲插标杆 —— 乐得瑞 LDR6020,Type‑C 全场景互联 “智慧芯”
c语言·开发语言·计算机外设
Xin_ye1008631 分钟前
C# 零基础到精通教程 - 第七章:面向对象编程(入门)——类与对象
开发语言·c#
AI科技星1 小时前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
审判长烧鸡1 小时前
【Go工具】go-playground是什么组织?官方的?
开发语言·安全·go
kkeeper~2 小时前
0基础C语言积跬步之字符函数与字符串函数(上)
c语言·开发语言
hhb_6182 小时前
Swift核心技术难点与实战案例解析
开发语言·ios·swift
一楼的猫2 小时前
从工具链视角对比:番茄作家助手 vs 第三方写作辅助方案
java·服务器·开发语言·前端·学习·chatgpt·ai写作
程序leo源2 小时前
Qt窗口详解
开发语言·数据库·c++·qt·青少年编程·c#