Qt对图像处理有些奇怪的地方。如果你只使用png格式,你永远不会遇到问题。其他图像格式的处理方式略有不同。
在Qt目录下(包含所有二进制文件和源代码),你会找到一个名为“plugins\imageformats”的目录。
在该目录中有大量的dll文件(或.so文件),每个文件都支持Qt支持的一种图像格式。在你的情况下,我想你感兴趣的是qjpeg4.dll文件。
现在,当你运行应用程序并尝试使用jpeg格式时,Qt将尝试加载此插件,但如果它找不到它,则图像不会显示出来。
我们曾经遇到过ico文件的类似问题。在我们的开发环境中,它可以工作,因为Qt文件夹在我们的PATH中,因此它自动找到了这个插件。但是,当我们发布软件时,我们只会分发我们需要的那些dll文件,因此它无法工作。
经过多次调查,我们做了以下事情:
1.我们的应用程序位于bin/目录下。这是exe和所有Qt dll文件的位置。例如QtCore4.dll和QtGui4.dll等。
2.在bin目录下创建一个名为“imageformats”的子目录。
3.放置qjpeg4.dll和任何其他可能需要的图像插件。
4.更改代码如下:
QApplication _App(argc, argv);
//查找bin目录的路径-无论你的exe位于何处。
QString _Path = _PathToBin + QString(QDir::separator()) + "imageformats");
//这一行提供了一个路径给Qt,告诉它在这里寻找插件
QApplication::addLibraryPath(_Path);
//初始化主窗体
return _App.exec();
这应该确保Qt知道jpeg处理插件,并在UI中加载你的图像。