C++ QAction没有';不显示来自Pixmap的图标

C++ QAction没有';不显示来自Pixmap的图标,c++,qt,qpixmap,qaction,C++,Qt,Qpixmap,Qaction,在过去的几个小时里,我试图解决在QAction中显示图标的问题。 问题是图标没有显示,只有文本解密被放置在“Roads”位置。 我尝试过调试它,但QPixmap始终为NULL,看起来它找不到文件 我的代码是这样的: QPixmap icon(":/road.png"); QAction *A1 = new QAction(icon,"Road...", 0); A1->setIconVisibleInMenu(true); A1->setVisible(true); connect(

在过去的几个小时里,我试图解决在QAction中显示图标的问题。
问题是图标没有显示,只有文本解密被放置在“Roads”位置。
我尝试过调试它,但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()));
<RCC>
    <qresource prefix="/">
        <file>road.png</file>
        <file>done.gif</file>
        <file>load.gif</file>
    </qresource>
</RCC>
我读过。 根据它,我通过添加以下行更改了我的pro文件:

RESOURCES = ./res/icons.qrc
在src目录中,我创建了subdir'res',并在那里放置了我的图标:

-src
  --res
        road.png
        load.gif
        done.gif
下面是我的icons.qrc文件的外观:

QPixmap icon(":/road.png");
QAction *A1 = new QAction(icon,"Road...", 0);
A1->setIconVisibleInMenu(true);
A1->setVisible(true);
connect(A1, SIGNAL(triggered()), SLOT(triggeredA1()));
<RCC>
    <qresource prefix="/">
        <file>road.png</file>
        <file>done.gif</file>
        <file>load.gif</file>
    </qresource>
</RCC>

road.png
done.gif
load.gif
即使经过所有这些操作,QPixmap仍然为空。
我做错了什么?

您可以使用别名和相对的“伪路径”

范例

<qresource prefix="/images">
    <file alias="foobar">resources/images/foobar.png</file>
</qresource>

参考资料/图片/foobar.png
然后像这样使用pixmap

<pixmap resource="path/to/resourcefile.qrc">:/images/foobar</pixmap>
:/images/foobar
解决方案:

我正在使用OS X并使用MacPorts构建Qt4。由于某些原因,MacPorts提供的构建中不包括libpng。 因此,解决方案是通过MacPorts手动构建libpng:

sudo port install libpng
并通过在.pro文件中添加以下行将此库包括到项目中

LIBS += -lpng

完成这些步骤后,您可以在项目中使用上面编写的.png文件。

Hmmm,文件名是
roads.png
,但您将其称为
road.png
?并将图像文件放在你的.qrc文件所在的目录中。@vahancho,嗯,这只是一个输入错误,但谢谢:)验证一下,你是否可以打开任何图像。例如,
QPixmap图标(“到图像文件的路径”);bool b=icon.isNull()。如果可以,问题与您的资源文件有关。可能是
road.png
文件中的问题,或者是图像类型中的问题?尝试改用其他文件。其他类型:gif、jpeg等。请尝试…@tema,您可能会错过png图像插件。检查plugins/imageformats目录。或者您的png文件已损坏png文件或其他类型的图像,但文件名不一致。