У меня есть настольный проект Qt5, и я добавил файл «resource.qrc» с редактором Qt Creator, который создал следующую строку в файле .pro проекта:
RESOURCES = resource.qrc
Я поставил пустой префикс и файл PNG (14×14), и я попытался использовать его так:
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 (ресурс) (он дает мне неопределенный внешний)
Обновить:
Я публикую здесь свой файл qrc:
<RCC>
<qresource prefix="/">
<file>my_image.png</file>
</qresource>
</RCC>
это довольно просто, и я не понимаю, почему во время выполнения иконки не отображаются
@Nikos C. дает вам полезные советы, но я думаю, что ваша основная проблема заключалась в том, что вы не использовали правильную ссылку на ресурс.
В вашем коде у вас есть:
QPixmap pixmap = QPixmap ("://my_image.png");
но, согласно документация, так должно быть
QPixmap pixmap = QPixmap (":/my_image.png");
или вы можете дать псевдонимы своим ресурсам и использовать их вместо этого.
Недавно у меня была такая же проблема, когда я исказил строку ресурса. Если вы используете текущую версию Qt Creator, вы можете открыть свой файл .qrc для редактирования, затем щелкнуть правой кнопкой мыши по ресурсу (в нашем случае это изображение), к которому вы пытаетесь обратиться, затем нажмите «Копировать путь ресурса в буфер обмена». И вуаля, у вас есть правильная строка ресурса каждый раз.
Qt Creator потрясающий.
Надеюсь это поможет!
Проблема решена — использовать rcc.exe
C: \ root \ QT> c: \ root \ QT \ 4.7.4 \ bin \ rcc.exe Headless.qrc -o qtresources.cpp
Во время компиляции у вас должны быть изображения в пути.
Создайте файл qtresources.cpp, включите этот файл в make-файл или проект. Вы должны увидеть изображение.