使用 QPixmap 加载图像

Jij*_*joy 4 python qt pyside

我有一个图像文件,如C:/44637landscapes-2007.jpg

我想QPixmap使用 PySide加载此文件

我尝试如下。

pixmap = QPixmap('C:/44637landscapes-2007.jpg')
Run Code Online (Sandbox Code Playgroud)

但文档说像QPixmap(':/xxxxxx.jpeg'). 是什么':'意思?

如何加载图像'C:\'

编辑:问题在于尝试加载"JPEG"。它能够加载"PNG",没有任何问题。那么我还需要做什么来加载"JPEG"

谢谢吉乔伊

Liz*_*Liz 5

Qt 对图像做了一些奇怪的事情。如果你只使用 png,你永远不会有问题。其他图像格式的处理方式略有不同。

如果您查看 Qt 目录(所有二进制文件和源代码都在其中),您会发现一个名为: plugins\imageformats

在该目录中,Qt 支持的每种图像格式都有大量dlls(或.so)一个。就你而言,我认为你感兴趣的是qjpeg4.dll

现在,当您运行应用程序并尝试使用 a 时jpeg,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.