包含来自 *.pri 文件的资源

Include resources from *.pri file

我在 Qt 中包含来自 *.pri 文件的资源时遇到了一些问题。基本上我的 test.pri 文件是这样的:

INCLUDEPATH += $$PWD
SOURCES     += $$PWD/testdlg.cpp
HEADERS     += $$PWD/testdlg.h 
FORMS       += $$PWD/testdlg.ui 
RESOURCES   += $$PWD/res.qrc

*.ico 文件存储在子文件夹 $$PWD/res 中,我已将它们成功添加到我的 res.qrc 文件中,如下所示:

<RCC>
    <qresource prefix="/">
        <file>res/Icon1.ico</file>
        <file>res/Icon2.ico</file>
    </qresource>
</RCC>

我将 test.pri 文件包含到我的 *.pro 文件中:

include(Tests/test.pri)

在 Qt Designer 中,当我打开 test.ui 文件时,我可以看到所有图标。我可以通过 Designer 的 属性 管理器从资源中选择 QToolButton(例如)的图标。一切都按预期工作。但是,当我编译应用程序时,没有显示图标。

如果我不使用 *.pri 文件,则会显示 QToolButton 的图标。 谁能给我提示我在这里缺少什么?

让我们调用您的主项目文件main.pro。那么根据你提供的信息,我假设你有

/main.pro
/Tests/test.pri

因为 $$PWD 是 .pri 文件的父文件,我假设你有

/main.pro
/Tests/test.pri
/Tests/testdlg.cpp
/Tests/testdlg.h
/Tests/testdlg.ui
/Tests/res.qrc

现在 qrc 文件中的条目是相对于它的父目录的,所以你有:

/main.pro
/Tests/test.pri
/Tests/testdlg.cpp
/Tests/testdlg.h
/Tests/testdlg.ui
/Tests/res.qrc
/Tests/res/Icon1.ico
/Tests/res/Icon2.ico

根据你的 qrc 前缀,我假设你通过

调用资源
qrc:/res/Icon1.ico
qrc:/res/Icon2.ico

这些假设都正确吗?

我不明白哪里出了问题。在昨天晚上分析问题没有成功之后,今天早上我打开了 Qt creator,一切正常。也许我只需要在添加资源后重新启动 Qt creator?我不能说。