在 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();
}