2012-12-27 75 views
11

我有一个QT5桌面项目,我添加有创建以下行项目的.pro文件的Qt Creator的编辑器“resource.qrc”文件:Qt的QRC资源文件 - 无法加载图标

我把空白的前缀和PNG文件(14×14),我试图用这样的:

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(资源)宏(这让我不确定外部)

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

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

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

+2

Qt资源没有使用Windows EXE资源机制,所以这是正常的,他们没有出现在那里。请发布你的resource.qrc文件。另外,请注意,您可以直接在QIcon中加载图像。无需通过QPixmap。试试看:'ui-> combobox-> addItem(QIcon(“:/ my_image.png”),“itemname”);' –

+0

我只是做了,谢谢你的帮忙! –

回答

11

@尼克斯C.给你有用的建议,但我认为你的主要问题是,你没有使用正确的链接到资源。

在您的代码,您有:

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

但是,根据documentation,它应该是

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

或者你可以到你的资源给别名,并使用这些来代替。

21

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

Qt Creator非常棒。

希望这会有所帮助!

+0

Thx for'复制资源路径...'这表明我有复制文件夹':/ dictionaries/dictionaries/en.dic' –

0

问题解决在使用rcc.exe C:\ ROOT \ QT> C:\ ROOT \ QT \ 4.7.4 \ BIN \ rcc.exe Headless.qrc -o qtresources.cpp 在编译过程中,你应该有图像在路径中。 创建qtresources.cpp文件在makefile或project中包含此文件。你应该能看到图像。