2013-06-14 17 views
7

Mi piacerebbe mostrare un'immagine all'interno di un widget QLabel. L'immagine si trova nella cartella ./images/ relativo al file resource.qrc e comprendeva come il presente:Qtc percorso risorsa non funziona

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

Ora voglio mostrare l'immagine all'interno di un QLabel:

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

Questo non funzionano. In modalità debug pixmap = NULL. Penso che il percorso qrc ​​sia sbagliato. Con il percorso di sistema assoluto all'immagine c:/images/... funziona perfettamente. Qualche idea?

+1

hai inizializzato la tua risorsa? –

+0

Penso di sì. nel mio file .pro è indicato come "RISORSE = resource.qrc" – Xear

+1

hai bisogno di qualcosa come "Q_INIT_RESOURCE (risorse);" nel tuo programma –

risposta

6

Il prefisso che hai specificato viene applicato al percorso della risorsa all'interno dell'app. Non si applica al vero percorso del file. La risorsa corretta dovrebbe essere:

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

e il percorso delle risorse sarà :/images/images/image.png.

È inoltre possibile specificare prefix="/" nel file RCC e utilizzare il percorso di risorsa ://images/image.png. Penso che sia più conveniente.

+0

ho provato entrambi ma non funzionerà anche. – Xear

+0

ok, va tutto bene. Devo eseguire qMake dopo le modifiche nel file .pro. la tua descrizione era assolutamente corretta. grazie – Xear

+0

QMake non lo ha fatto per me, ma ha fatto un riavvio di QtCreator. –

5

Se si utilizza un alias nel file donazione di risorse: -

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

Quindi è possibile accedere l'immagine come si sta facendo con: -

": /images/image.png "