2010-02-10 3 views
6

Ho un'applicazione Qt con alcuni file JPG incorporati che desidero visualizzare. Quando compilo ed eseguo entrambe le versioni di debug e release sulla mia macchina, tutto funziona perfettamente. Quando copio l'applicazione su una pen drive e la eseguo da lì sulla mia macchina, funziona perfettamente. Sulla chiavetta e sulla macchina di un altro sviluppatore: OK. Sulla chiavetta su una terza macchina non sviluppatore: nessuna immagine!Risorse JPG incorporate non caricate nell'applicazione Qt

proj.pri 
RESOURCES += ./proj.qrc 

proj.qrc: 
<RCC> 
<qresource prefix="/myApp"> 
    <file>Gui/Resources/logo.jpg</file> 
    <file>Gui/Resources/another_image.jpg</file> 
</qresource> 
</RCC> 

main.cpp: 
{ 
    ... 
    QImage *logo = new QImage(":/myApp/Gui/Resources/logo.jpg"); 
    QImage *image = new QImage(":/myApp/Gui/Resources/another_image.jpg"); 

    myClass *d1 = new myClass("Some Text", 48, 30, logo); 
    myClass *d2 = new myClass("Some More Text", 48, 30, another_image); 
    ... 
} 

mi hanno confermato che le immagini vengono aggiunte al file eseguibile commentando la linea RISORSE nel file .pri. La dimensione del file binario diminuisce della dimensione delle immagini più un po '; quando eseguo l'applicazione, le immagini non vengono visualizzate. Annullo la riga RISORSE e tutto funziona come descritto sopra.

Cosa mi manca qui? Una DLL sul computer del non sviluppatore? Un

Ambiente:

  • Win XP
  • Qt 4.6.1
  • Visual Studio 2008
  • Qt Creator 1.3.1

risposta

11

Ha bisogno di plug-in jpeg caricare immagini. Se hai installato Qt, sarebbero in% QTDIR% \ plugins \ imageformats.

Copia qjpeg4.dll nella cartella del plugin sulla pen drive.

root/app.exe 
root/qt.conf 
root/plugins/imageformats/qjpeg4.dll 

Nel percorso qt.conf file impostato al vostro plugin dir:

[Paths] 
plugins=./plugins 
+0

L'ho già sperimentato e questa è la soluzione su cui sono incappato. OP, tieni presente che la struttura delle directory può essere importante. –

+2

BTW, copiato imageformats/qjpeg4.dll in root (come nell'esempio sopra) e lasciato fuori qt.conf e root/plugins. – dwj

+0

Sì, potrebbe essere un po 'ridondante, ma non ricordo l'ordine esatto di ricerca Qt :). – Eugene

0

Mentre la risposta più precisa è data already, piuttosto che dover distribuire più DLL e una struttura di cartelle, lo trovo molto più semplice convertire semplicemente le immagini in png ... non sono necessarie dll di formato immagine ecc. se usi pngs.