Qt 对图像做了一些奇怪的事情。如果您只使用 pngs,您将永远不会遇到问题。其他图像格式的处理方式略有不同。
如果您查看 Qt 目录(所有二进制文件和源代码都在其中),您会发现一个名为: plugins\imageformats
在该目录中,Qt 支持的每种图像格式都有大量dlls
(或)一个。.so
就您而言,我认为您感兴趣的是qjpeg4.dll
现在,当您运行应用程序并尝试使用 ajpeg
时,Qt 将尝试加载此插件,但如果找不到,则您的图像将不会显示。
我们对 ico 文件也有类似的问题。它在我们的开发环境中工作,因为 Qt 文件夹在我们的PATH,
,因此它神奇地找到了这个插件。但是,当我们发布我们的软件时,我们只会分发我们需要的那些 dll,因此它不起作用。
经过大量调查,这就是我们所做的:
我们的应用程序位于 bin/ 目录中。这是放置 exe 和所有 Qt dll 的地方。 QtCore4.dll
等等QtGui4.dll
……
在 bin 目录下,我们创建一个名为'imageformats'
Putqjpeg4.dll
和您可能需要的任何其他图像插件。
更改代码如下:
QApplication _App(argc, argv);
// Find the path of your bin directory - whereever your exe resides.
QString _Path = _PathToBin + QString(QDir::separator()) + "imageformats");
// This line is providing a path to Qt telling it to look here for plugins
QApplication::addLibraryPath(_Path);
// Initialize the main form
return _App.exec();
这应该确保 Qt 知道jpeg
处理插件,并将您的图像加载到UI
.