Qt应用中嵌入的JPG资源无法加载

8

我有一个Qt应用程序,其中包含一些嵌入的JPG文件,我想显示这些文件。当我在我的计算机上编译和运行调试和发布版本时,一切都正常。当我将应用程序复制到一个存储设备并在我的计算机上从那里运行时,它也能正常工作。在存储设备上和另一位开发人员的计算机上:OK。但是在第三个非开发人员的计算机上使用存储设备运行时:没有图片

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

我确认通过注释.pri文件中的RESOURCES行,将图片添加到可执行文件中。二进制文件的大小减少了图片的大小加上一点点;当我运行应用程序时,图片不会出现。取消注释RESOURCES行,一切都像上面描述的那样工作。
我错过了什么?非开发人员机器上的DLL文件?
环境: - Win XP - Qt 4.6.1 - Visual Studio 2008 - Qt Creator 1.3.1
2个回答

12

需要jpeg插件来加载图片。如果你已经安装了Qt,它们应该在%QTDIR%\plugins\imageformats中。

将 qjpeg4.dll 复制到您的U盘上的插件文件夹中。

root/app.exe
root/qt.conf
root/plugins/imageformats/qjpeg4.dll
在qt.conf文件中设置您的插件目录路径:
[Paths]
plugins=./plugins

我以前遇到过这个问题,这是我偶然发现的解决方案。楼主要记住目录结构可能很重要。 - San Jacinto
2
顺便提一下,将imageformats/qjpeg4.dll复制到根目录(如上例所示),并省略qt.conf和root/plugins。 - dwj
是的,这可能有点冗余,但我不记得Qt查找的确切顺序 :)。 - Eugene

0

虽然最准确的答案已经给出, 但是与其部署更多的dll和文件夹结构,我发现将图像转换为png格式更容易...如果使用png,则不需要任何图像格式的dll等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接