Файл ресурсов Qt qrc - невозможно загрузить значок

У меня есть рабочий проект Qt5, и я добавил файл "resource.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 (ресурс) (он дает мне undefined внешний)

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

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

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

Ответ 1

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

В вашем коде у вас есть:

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

но, согласно документации, это должно быть

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

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

Ответ 2

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

Создатель Qt потрясающий.

Надеюсь, это поможет!

Ответ 3

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