web-dev-qa-db-fra.com

Fichier de ressources Qt qrc - impossible de charger l'icône

J'ai un projet de bureau Qt5 et j'ai ajouté un fichier "resource.qrc" avec l'éditeur Qt Creator qui a créé la ligne suivante dans le fichier .pro du projet:

RESOURCES = resource.qrc

J'ai mis un préfixe vide et un fichier png (14x14) et j'ai essayé de l'utiliser comme ceci:

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

Le problème est: l'icône ne s'affichera pas!

Les oeuvres suivantes:

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

le problème doit donc être lié au processus d’incorporation des ressources. J’ai remarqué que le "fichier exe" généré ne contenait pas de section de ressources à l’intérieur ... Q_INIT_RESOURCE (ressource) macro (elle me donne un externe non défini)

Mise à jour: je poste ici mon fichier qrc:

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

c'est assez simple et je ne comprends pas pourquoi, à l'exécution, les icônes ne s'affichent pas

12
Johnny Pauling

@Nikos C. vous donne des conseils utiles, mais je pense que votre principal problème est que vous n'avez pas utilisé le bon lien vers la ressource.

Dans votre code, vous avez:

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

mais, selon la documentation , il devrait être

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

ou vous pouvez donner des alias à vos ressources et les utiliser à la place.

11
troyane

J'ai eu ce même problème récemment, où j'ai malformé la chaîne de ressources. Si vous utilisez une version actuelle de Qt Creator, vous pouvez ouvrir votre fichier .qrc pour le modifier, puis cliquer avec le bouton droit de la souris sur la ressource (dans ce cas, l'image) que vous essayez d'adresser, puis cliquez sur "Copier le chemin d'accès aux ressources dans le Presse-papiers". Et voila, vous avez la bonne chaîne de ressources à chaque fois.

Qt Creator est génial.

J'espère que cela t'aides!

23
Terrabits

Le problème est résolu. Utilisez rcc.exe. C:\root\QT> c:\root\QT\4.7.4\bin\rcc.exe. Headless.qrc -o qtresources.cpp Pendant la compilation, vous devez avoir des images dans le chemin. Créez le fichier qtresources.cpp avec ce fichier dans un fichier Make ou un projet. Vous devriez pouvoir voir l'image.

0
Raj