2010-02-10 5 views
6

Ich habe eine Qt-Anwendung, die einige eingebettete JPG-Dateien enthält, die ich anzeigen möchte. Wenn ich sowohl die Debug- als auch die Release-Versionen auf meinem Computer kompiliere und ausführe, funktioniert alles einwandfrei. Wenn ich die Anwendung auf einen USB-Stick kopiere und von dort auf meinem Rechner starte, funktioniert es einwandfrei. Auf dem USB-Stick und einem anderen Entwickler-Rechner: OK. Auf dem Thumb-Laufwerk auf einem dritten, nicht-Entwickler-Maschine: keine Bilder!Eingebettete JPG-Ressourcen, die nicht in der Qt-Anwendung geladen werden

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); 
    ... 
} 

Ich habe bestätigt, dass die Bilder durch Kommentare aus der RESOURCES Linie in der PRI-Datei zu der ausführbaren Datei hinzugefügt werden. Die Größe der Binärdatei sinkt um die Größe der Bilder plus ein Bit; Wenn ich die Anwendung starte, erscheinen die Bilder nicht. Ich verzichte auf die RESOURCES-Zeile und alles funktioniert wie oben beschrieben.

Was fehlt mir hier? Eine DLL auf dem Nicht-Entwickler-Rechner? Ein

Umwelt:

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

Antwort

11

Es JPEG-Plugin benötigt laden Bilder. Wenn Sie Qt installiert haben, wären sie in% QTDIR% \ plugins \ imageformats.

Kopieren Sie qjpeg4.dll in den Plugin-Ordner auf Ihrem USB-Stick.

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

In qt.conf Datei gesetzt Pfad zu Ihrem Plugins dir:

[Paths] 
plugins=./plugins 
+0

Ich habe dies schon einmal erlebt und das ist die Lösung, auf die ich gestoßen bin. OP, beachten Sie, dass die Verzeichnisstruktur von Bedeutung sein kann. –

+2

BTW, kopiert imageformats/qjpeg4.dll in root (wie im obigen Beispiel) und verließ qt.conf und root/plugins. – dwj

+0

Ja, das könnte ein wenig überflüssig sein, aber ich erinnere mich nicht, genaue Reihenfolge der Suche Qt tut :). – Eugene

0

Während die genaueste Antwort already gegeben wird, anstatt mehrere DLLs und eine Ordnerstruktur zu implementieren, finde ich es viel einfacher, nur die Bilder in png konvertieren ... kein Bildformat Dlls etc. erforderlich, wenn Sie PNGs verwenden.