1

在过去的几个小时里,我试图解决在 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()));

我读过这篇文章。根据它,我通过添加以下行更改了我的专业文件:

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。我究竟做错了什么?

4

2 回答 2

1

解决方案:

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

sudo port install libpng

并通过在 .pro 文件中添加以下行来将此库包含到您的项目中

LIBS += -lpng

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

于 2015-05-27T21:19:50.763 回答
0

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

例子

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

然后像这样使用像素图

<pixmap resource="path/to/resourcefile.qrc">:/images/foobar</pixmap>
于 2014-07-01T10:01:02.557 回答