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>
Другие вопросы по тегам