QAction не показывает значок из Pixmap

Последние пару часов я пытаюсь решить проблему с отображением иконки в 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 еще НОЛЬ.
Что я делаю неправильно?

1

Решение

Решение:

Я использую OS X и построил Qt4 с MacPorts. По какой-то причине libpng не включен в сборку, предоставляемую MacPorts.
Итак, решение состоит в том, чтобы собрать libpng через MacPorts вручную:

sudo port install libpng

и включите эту библиотеку в свой проект, добавив следующую строку в файл .pro

LIBS += -lpng

После этого вы можете использовать файлы .png в вашем проекте, как было написано выше.

1

Другие решения

Вы можете использовать псевдоним и относительный «псевдо-путь»

пример

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

затем используйте растровое изображение, как так

<pixmap resource="path/to/resourcefile.qrc">:/images/foobar</pixmap>
0

По вопросам рекламы [email protected]