2012-12-27 19 views
11

Ho un progetto del desktop QT5 e ho aggiunto un file "resource.qrc" con l'editor Qt Creator che ha creato la seguente riga nel file di .pro del progetto:Qt QRC file di risorse - non può caricare l'icona

ho messo un prefisso vuoto e un file PNG (14x14) e ho cercato di usare in questo modo:

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

il problema è: l'icona non apparirà!

le seguenti opere:

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

in modo che il problema deve essere nel processo di inclusione delle risorse .. Ho notato che il generato "exe" non ha una sezione delle risorse al suo interno ... non lo faccio hanno le librerie statiche esterni collegati, quindi non credo che ho bisogno del (risorsa) macro Q_INIT_RESOURCE (mi dà indefinito esterno)

Aggiornamento: sto postando qui il mio file QRC:

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

è piuttosto semplice e non capisco perché le icone di runtime non vengono visualizzate

+2

Le risorse Qt non utilizzano il meccanismo delle risorse di Windows exe, quindi è normale che non vengano visualizzate lì. Per favore pubblica il tuo file resource.qrc. Inoltre, si noti che è possibile caricare un'immagine direttamente in un QIcon. Non è necessario passare attraverso QPixmap. Prova semplicemente: 'ui-> combobox-> addItem (QIcon (":/my_image.png ")," itemname ");' –

+0

L'ho appena fatto, grazie per il tuo aiuto! –

risposta

11

@Nikos C. ti dà consigli utili, ma penso che il tuo problema principale era che non hai usato il link corretto per risorsa.

Nel codice, si ha:

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

ma, secondo il documentation, dovrebbe essere

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

Oppure si può dare gli alias alle risorse, e usare quelli invece.

21

Ho avuto questo stesso problema di recente, in cui ho deformato la stringa di risorse. Se si utilizza una versione corrente di Qt Creator, è possibile aprire il file .qrc per la modifica e quindi fare clic con il pulsante destro del mouse sulla risorsa (in questo caso l'immagine) che si sta cercando di indirizzare, quindi fare clic su "Copia percorso risorse negli Appunti". E voilà, hai sempre la stringa di risorse corretta.

Qt Creator è fantastico.

Spero che questo aiuti!

+0

Thx per 'Copia percorso risorsa ...' questo mostra che ho una cartella duplicata ':/dizionari/dizionari/en.dic' –

0

problema è risolto è l'uso rcc.exe C: \ root \ QT> c: \ 4.7.4 \ bin \ rcc.exe Headless.qrc -o qtresources.cpp Durante la compilazione root \ QT \ si dovrebbe avere immagini nel percorso. Creare il file qtresources.cpp include questo file nel makefile o nel progetto. Dovresti vedere l'immagine.