Qt qrc 资源文件 - 无法加载图标

Posted

技术标签:

【中文标题】Qt qrc 资源文件 - 无法加载图标【英文标题】:Qt qrc resource file - can't load icon 【发布时间】:2012-12-27 17:05:31 【问题描述】:

我有一个 Qt5 桌面项目,我使用 Qt Creator 编辑器添加了一个“resource.qrc”文件,该编辑器在项目的 .pro 文件中创建了以下行:

RESOURCES = resource.qrc

我放了一个空白前缀和一个 png 文件 (14x14),我尝试像这样使用它:

QPixmap pixmap = QPixmap ("://my_image.png");
ui->combobox->addItem(QIcon(pixmap), "itemname");

问题是:图标不会出现!

以下作品:

QPixmap pixmap(14,14);
pixmap.fill(QColor("red"));
ui->combobox->addItem(QIcon(pixmap), "itemname");

所以问题一定出在资源嵌入过程中..我注意到生成的“exe”里面没有资源部分...我没有静态链接的外部库,所以我不认为我需要 Q_INIT_RESOURCE(resource) 宏(它给了我未定义的外部)

更新: 我在这里发布我的 qrc 文件:

<RCC>
    <qresource prefix="/">
        <file>my_image.png</file>
    </qresource>
</RCC>

这很简单,我不明白为什么在运行时图标不显示

【问题讨论】:

Qt 资源没有使用 Windows exe 资源机制,所以它们不出现在那里是正常的。请发布您的 resource.qrc 文件。另外,请注意,您可以直接在 QIcon 中加载图像。无需通过 QPixmap。尝试简单:ui-&gt;combobox-&gt;addItem(QIcon(":/my_image.png"), "itemname"); 【参考方案1】:

我最近遇到了同样的问题,我的资源字符串格式错误。如果您使用的是当前版本的 Qt Creator,您可以打开您的 .qrc 文件进行编辑,然后右键单击您要处理的资源(在本例中为图像),然后单击“将资源路径复制到剪贴板”。瞧,你每次都有正确的资源字符串。

Qt Creator 很棒。

希望这会有所帮助!

【讨论】:

感谢Copy Resource Path... 这表明我复制了文件夹:/dictionaries/dictionaries/en.dic【参考方案2】:

@Nikos C. 为您提供了有用的建议,但我认为您的主要问题是您没有使用正确的资源链接。

在您的代码中,您有:

QPixmap pixmap = QPixmap ("://my_image.png");

但是,根据documentation,应该是

QPixmap pixmap = QPixmap (":/my_image.png");

或者您可以为您的资源指定别名,然后使用这些别名。

【讨论】:

【参考方案3】:

问题解决是使用 rcc.exe C:\root\QT>c:\root\QT\4.7.4\bin\rcc.exe Headless.qrc -o qtresources.cpp 在编译期间,路径中应该有图像。 创建 qtresources.cpp 文件,将此文件包含在 makefile 或项目中。您应该可以看到图像。

【讨论】:

以上是关于Qt qrc 资源文件 - 无法加载图标的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Qt C++ 程序中加载 qrc 文件

qrc资源文件加载后,裸机环境下图片不显示

VS2010怎么加载QT的QICON

qt资源加载出错

无法使用 Qt3D 查看/加载 .obj 文件,用 cpp 编写

qt webengineview 加载本地资源方式