QAction没有显示Pixmap的图标

时间:2014-07-01 09:57:24

标签: c++ qt qpixmap qaction

在过去的几个小时里,我正试图解决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 。 我做错了什么?

2 个答案:

答案 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>