2010-06-06 274 views
2

我有一个使用Qt编写的软件,它可以在Windows和Linux上运行。Qt在Linux上不显示PNG图像

我使用PNG图像作为我的QAction的图标,嵌入资源中。

我有以下的树形目录:

/ 
    resources/ 
    icons.qrc 
    image.png 

这里是icons.qrc内容:

<RCC> 
    <qresource prefix="/resources" lang="fr"> 
    <file alias="image.png">image.png</file> 
    </qresource> 
</RCC> 

我宣布我的QIcon这样的:

QIcon(":/resources/image.png") 

在Windows下,它运行良好,但在Linux上(我只在Ubuntu 10.4上尝试过r),图像不显示。

有什么特别的,我必须做这个工作?这是一个配置问题吗?

谢谢。

+0

是不是在/资源开始的额外斜杠?也许它找不到文件 – fabrizioM 2010-06-06 09:42:51

+0

@fabrizioM:我试过,但不幸的是,它不起作用。我甚至试图直接链接到文件。 – ereOn 2010-06-06 09:51:10

+0

Linux上的Qt是否支持PNG文件格式?尝试例如BMP或JPG ... – mosg 2010-06-06 10:36:18

回答

1

其实,我发现了什么是错误的。

它与Linux或Windows无关,这是由于语言环境。

我的linux系统是英文的,而我的Windows是法文的。由于资源有lang="fr"标志,在非法语操作系统上没有显示任何内容...

一个愚蠢的错误!

2

看来,这一切都与你的代码。

尝试将此定义添加到您的专业文件。我真的不知道,但我们仍然可以尝试:

QTPLUGIN += qpng 

和你mainwindow.cpp

#include <QtPlugin> 
Q_IMPORT_PLUGIN(qpng) 
+0

感谢您的回答。一旦我这样做,链接失败,因为他没有找到“libqpng”。 – ereOn 2010-06-06 12:11:03

+0

所以你需要用libpng支持来重建Qt库,我认为... – mosg 2010-06-06 14:47:12

+0

@mosg我用'.bmp'和'.jpg'试过了,没有结果,它不应该至少支持这两个吗?尝试找出它被编译的选项 – ereOn 2010-06-06 19:10:33

0

我找到了解决方案。

  • 在windows ==>将Qt系统文件夹中的“imageformats”文件夹复制到您的EXE程序文件夹中。

  • 在linux中==>安装libpng包。

然后你会看到你的程序中的PNG图像。

在Ubuntu中,我的程序没有显示PNG图像。
我安装了libpng软件包(libpng16。*:sudo apt-get install libpng16 *), 然后我的程序显示PNG图像(工具栏按钮,飞溅窗口等等)。