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 все равно NULL. Что я делаю неправильно?
2 ответа
Решение:
Я использую OS X и построил Qt4 с MacPorts. По какой-то причине libpng не включен в сборку, предоставляемую MacPorts. Итак, решение состоит в том, чтобы собрать libpng через MacPorts вручную:
sudo port install libpng
и включите эту библиотеку в свой проект, добавив следующую строку в файл.pro
LIBS += -lpng
После этого вы можете использовать файлы.png в вашем проекте, как было написано выше.
Вы можете использовать псевдоним и относительный "псевдо-путь"
пример
<qresource prefix="/images">
<file alias="foobar">resources/images/foobar.png</file>
</qresource>
затем используйте растровое изображение, как так
<pixmap resource="path/to/resourcefile.qrc">:/images/foobar</pixmap>