如果qrc资源正确编译成二进制文件,它们会丢失在哪里?

时间:2013-09-28 17:43:22

标签: c++ qt cmake

对于我的项目,我在.qrc文件中有pixmaps。我可以看到qrc生成的头文件包含我的pixmaps的名称,它们肯定被编译成二进制文件。但是,图片不会加载(它们在GUI中为空),以及以下代码

QDirIterator it(":", QDirIterator::Subdirectories);
while (it.hasNext()) {
    qDebug() << it.next();
}

不输出任何内容。

我尝试制作一个最小的例子,但无法重新创建错误(图像显示)。无论如何,这个例子展示了我如何编译它。见this link here。知道如何找到这个bug吗?

1 个答案:

答案 0 :(得分:1)

如果您的qrc在链接到您的应用程序之前被编译到库中,您可能需要在可执行文件中调用Q_INIT_RESOURCE,通常在main()中。

  

通常,Qt资源会在启动时自动加载。对于存储在静态库中的资源,某些平台上需要Q_INIT_RESOURCE()宏。

有关Q_INIT_RESOURCE的更多详情,请参阅QDir documentation