C++ QAction没有';不显示来自Pixmap的图标
在过去的几个小时里,我试图解决在QAction中显示图标的问题。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(
问题是图标没有显示,只有文本解密被放置在“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文件或其他类型的图像,但文件名不一致。