在过去的几个小时里,我正试图解决QAction中显示图标的问题。
问题是图标没有显示,只有文字解密位于“道路”位置。
我试过调试它,并且 QPixmap 一直都是NULL,看起来它找不到文件。
这是我的代码的样子:
QPixmap icon(":/road.png");
QAction *A1 = new QAction(icon,"Road...", 0);
A1->setIconVisibleInMenu(true);
A1->setVisible(true);
connect(A1, SIGNAL(triggered()), SLOT(triggeredA1()));
我看过this article。 根据它,我通过添加行改变了我的专业文件:
RESOURCES = ./res/icons.qrc
在src目录中,我创建了subdir'res',并在那里放置了我的图标:
-src
--res
road.png
load.gif
done.gif
以下是我的icons.qrc文件的样子:
<RCC>
<qresource prefix="/">
<file>road.png</file>
<file>done.gif</file>
<file>load.gif</file>
</qresource>
</RCC>
即使在所有这些操作之后 QPixmap 仍然 NULL 。 我做错了什么?
答案 0 :(得分:1)
解决方案:
我正在使用OS X并使用MacPorts构建Qt4。出于某种原因,libpng不包含在MacPorts提供的构建中。 因此,解决方案是通过MacPorts手动构建libpng:
sudo port install libpng
并通过在.pro文件中添加以下行将此lib包含到您的项目中
LIBS += -lpng
完成此步骤后,您可以在项目中使用.png文件,如上所述。
答案 1 :(得分:0)
您可以使用别名和相对“伪路径”
例如
<qresource prefix="/images">
<file alias="foobar">resources/images/foobar.png</file>
</qresource>
然后像这样使用pixmap
<pixmap resource="path/to/resourcefile.qrc">:/images/foobar</pixmap>