2013-06-14 19 views
7

Ich möchte ein Bild in einem QLabel Widget zeigen. Das Bild wird im Ordner ./images/ relativ zum resource.qrc Datei befindet und enthalten wie folgt aus:Qt qrc Ressourcenpfad funktioniert nicht

<RCC> 
    <qresource prefix="/images"> 
     <file>image.png</file> 
    </qresource> 
</RCC> 

Jetzt möchte ich in einem QLabel das Bild zeigen:

QPixmap pixmap(":/images/image.png"); 
label->setPixmap(pixmap); 

Diese funktionieren nicht. Im Debug-Modus pixmap = NULL. Ich denke der qrc Pfad ist falsch. Mit dem absoluten Systempfad zum Bild c:/images/... klappt es einwandfrei. Irgendeine Idee?

+1

haben Sie Ihre Ressource initialisiert? –

+0

Ich denke schon. in meiner .pro-Datei wird es als "RESOURCES = resource.qrc" – Xear

+1

erwähnt, Sie brauchen etwas wie 'Q_INIT_RESOURCE (Ressourcen);' in Ihrem Programm –

Antwort

6

Das von Ihnen angegebene Präfix wird auf den Ressourcenpfad innerhalb der App angewendet. Es gilt nicht für den tatsächlichen Pfad der Datei. Das muss die richtige Ressource:

<RCC> 
    <qresource prefix="/images"> 
     <file>images/image.png</file> 
    </qresource> 
</RCC> 

Und der Ressourcenpfad :/images/images/image.png sein wird.

Sie können auch prefix="/" in RCC-Datei angeben und ://images/image.png Ressourcenpfad verwenden. Ich denke, es ist bequemer.

+0

habe ich beide versucht, aber es wird auch nicht funktionieren. – Xear

+0

ok, alles ist in Ordnung. Ich muss qMake nach den Änderungen in der .pro-Datei ausführen. Deine Beschreibung war absolut korrekt. danke – Xear

+0

QMake hat es nicht ganz für mich gemacht, aber ein Neustart von QtCreator hat es getan. –

5

Wenn Sie einen Alias ​​in Ihrer Ressource-Datei Geben Sie bitte: -

<RCC> 
<qresource prefix="/images"> 
    <file alias="image">images/image.png</file> 
</qresource> 
</RCC> 

Dann können Sie Ihr Bild zugreifen, wie Sie es zu tun: -

„: /images/image.png "

Verwandte Themen