2012-12-27 9 views
11

ich ein QT5 Desktop-Projekt und ich hinzugefügt, um eine „resource.qrc“ Datei mit dem Qt Creator-Editor, der die folgende Zeile in das Projekt .pro-Datei erstellt:Qt qrc Ressourcendatei - nicht Symbol laden

ich habe ein leeres Präfix und eine pNG-Datei (14x14) und ich versuchte, es wie folgt zu verwenden:

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

das Problem ist: das Symbol oben nicht zeigen!

Die folgenden Werke:

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

so dass das Problem in der Ressource-Einbettungsprozess sein muss .. Ich habe bemerkt, dass die erzeugte „exe“ im Inneren keinen Ressourcenabschnitt ... weiß ich nicht statisch verlinkter externer Bibliotheken haben, so dass ich glaube nicht, dass ich die Q_INIT_RESOURCE (Ressource) Makro (es gibt mir nicht definiert extern)

Update: ich poste hier meine qrc Datei:

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

es ist ziemlich einfach und ich verstehe nicht, warum zur Laufzeit Symbole nicht angezeigt werden

+2

Qt-Ressourcen verwenden nicht den Windows-EXE-Ressourcenmechanismus, daher ist es normal, dass sie dort nicht angezeigt werden. Bitte posten Sie Ihre resource.qrc Datei. Beachten Sie auch, dass Sie ein Bild direkt in ein QIcon laden können. Keine Notwendigkeit, eine QPixmap zu durchlaufen. Versuchen Sie einfach: 'ui-> combobox-> addItem (QIcon (":/my_image.png ")," Elementname ");' –

+0

Ich habe es gerade getan, danke für Ihre Hilfe! –

Antwort

11

@Nikos C. gibt Ihnen nützliche Ratschläge, aber ich denke, Ihr Hauptproblem war, dass Sie nicht den richtigen Link zu verwenden Ressource.

in Ihrem Code Sie haben:

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

aber nach dem documentation, sollte es

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

oder Sie können Aliase Ihre Ressourcen geben werden, und diejenigen, stattdessen verwenden.

21

Ich hatte dieses Problem in letzter Zeit, wo ich die Ressource-Zeichenfolge falsch formatiert. Wenn Sie eine aktuelle Version von Qt Creator verwenden, können Sie Ihre .qrc-Datei zur Bearbeitung öffnen und dann mit der rechten Maustaste auf die Ressource (in diesem Fall Bild) klicken, die Sie ansprechen möchten, und dann auf "Ressourcenpfad in Zwischenablage kopieren" klicken. Und voila, Sie haben jedes Mal die richtige Ressourcen-Zeichenfolge.

Qt Creator ist genial.

Hoffe, das hilft!

+0

Thx für 'Resource Path kopieren ...' Dies zeigt, dass ich den Ordner ':/dictionaries/dictionaries/en.dic' dupliziert habe –

0

Problem gelöst wird, ist die Verwendung rcc.exe C: \ root \ QT> c: \ root \ QT \ 4.7.4 \ bin \ rcc.exe Headless.qrc -o qtresources.cpp Beim Übersetzen Sie haben sollten Bilder im Pfad. Erstellen Sie die Datei qtresources.cpp enthalten diese Datei in Makefile oder Projekt. Sie sollten das Bild sehen können.