2010-02-10 11 views
6

Tengo una aplicación Qt que tiene algunos archivos JPG incrustados que quiero mostrar. Cuando compilo y ejecuto las versiones de depuración y lanzamiento en mi máquina, todo funciona perfectamente. Cuando copio la aplicación en una memoria USB y la ejecuté desde allí en mi máquina, funciona bien. En la memoria USB y la máquina de otro desarrollador: OK. En la memoria USB de una tercera máquina que no es de desarrollador: ¡no hay imágenes!Recursos JPG incrustados que no se cargan en la aplicación 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); 
    ... 
} 

He confirmado que las imágenes están siendo añadidos al ejecutable comentando la línea de recursos en el archivo .pri. El tamaño del binario cae por el tamaño de las imágenes más un poco; cuando ejecuto la aplicación, las imágenes no aparecen. Desconecto la línea RECURSOS y todo funciona como se describe arriba.

¿Qué me falta aquí? ¿Una DLL en la máquina que no es del desarrollador? Un entorno

:

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

Respuesta

11

Se necesita plug-in para cargar jpeg imágenes. Si tiene Qt instalado, estaría en% QTDIR% \ plugins \ imageformats.

Copie qjpeg4.dll en la carpeta de complementos de su memoria USB.

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

En camino trazado archivo qt.conf a su plugins dir:

[Paths] 
plugins=./plugins 
+0

Lo he experimentado antes y esta es la solución con la que tropecé. OP, tenga en cuenta que la estructura del directorio puede ser importante. –

+2

BTW, copió imageformats/qjpeg4.dll en la raíz (como en el ejemplo anterior) y dejó fuera qt.conf y root/plugins. – dwj

+0

Sí, esto podría ser un poco redundante, pero no recuerdo el orden exacto de búsqueda Qt hace :). – Eugene

0

Mientras se da la respuesta más precisa already, en lugar de tener que desplegar más dlls y una estructura de carpetas, lo encuentro es mucho más fácil simplemente convertir las imágenes a png ... no se requieren dlls de formato de imagen, etc. si usa pngs.

Cuestiones relacionadas