Qt qrc resource file - не удается загрузить значок

у меня есть проект рабочего стола Qt5 и я добавил "ресурса.qrc " файл с редактором Qt Creator, который создал следующую строку в проекте .pro файл:

RESOURCES = resource.qrc

Я поставил пустой префикс и png-файл (14x14), и я попытался использовать его так:

QPixmap pixmap = QPixmap ("://my_image.png");
ui->combobox->addItem(QIcon(pixmap), "itemname");

проблема в том, что значок не появится!

следующие работы:

QPixmap pixmap(14,14);
pixmap.fill(QColor("red"));
ui->combobox->addItem(QIcon(pixmap), "itemname");

так что проблема должна быть в процессе внедрения ресурсов.. Я заметил, что сгенерированный " exe" внутри нет раздела ресурсов... У меня нет статических связанных внешних библиотек, поэтому я не думаю, что мне нужен макрос Q_INIT_RESOURCE(resource) (он дает мне неопределенный внешний)

обновление: Я размещаю здесь свой файл qrc:

<RCC>
    <qresource prefix="/">
        <file>my_image.png</file>
    </qresource>
</RCC>

это довольно просто, и я не понимаю, почему во время выполнения значки не отображаются

3 ответов


@Никос С. дает вам полезные советы, но я думаю, что ваша главная проблема в том, что вы не использовали правильную ссылку на ресурс.

в коде, у вас есть:

QPixmap pixmap = QPixmap ("://my_image.png");

а, по документация, должно быть

QPixmap pixmap = QPixmap (":/my_image.png");

или вы можете дать псевдонимы для ресурсов, и использовать их.


недавно у меня была такая же проблема, когда я исказил строку ресурса. Если вы используете текущую версию Qt Creator, вы можете открыть свой .qrc файл для редактирования, а затем щелкните правой кнопкой мыши ресурс (в данном случае изображение), который вы пытаетесь адрес, а затем нажмите кнопку "копировать путь к ресурсу в буфер обмена". И вуаля, у вас есть правильная строка ресурсов каждый раз.

Qt Creator является удивительным.

надеюсь, что это помогает!


проблема решена-использовать rcc.исполняемый C:\root\QT>c:\root\QT\4.7.4\bin\rcc.exe безголовый.qrc-o qtresources.СРР Во время компиляции у вас должны быть изображения в пути. Создайте qtresources.cpp-файл включает этот файл в makefile или project. Вы должны видеть изображение.