【问题标题】:Qt not displaying PNG images on LinuxQt 在 Linux 上不显示 PNG 图像
【发布时间】:2011-02-28 08:21:59
【问题描述】:

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

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

我有以下树目录:

/
  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 上尝试过),图像不显示。

我有什么特别的事情要做吗?这是配置问题吗?

谢谢。

【问题讨论】:

  • /resources 开头不是那个多余的斜线吗?可能是找不到文件
  • @fabrizioM:我试过了,但不幸的是,它不起作用。我什至尝试直接链接到该文件。
  • Linux 上的 Qt 是否支持 PNG 文件格式?尝试例如 BMP 或 JPG...
  • @mosg 我尝试了 jpg 和 bmp 都没有成功的结果:(

标签: c++ windows linux qt image


【解决方案1】:

我找到了解决办法。

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

  • 在 linux ==> 安装 libpng 包。

然后您将在程序中看到 PNG 图像。

在 ubuntu 中,我的程序没有显示 PNG 图片。
我安装了 libpng 包(libpng16.*:sudo apt-get install libpng16*), 然后我的程序显示 PNG 图像(工具栏按钮、启动窗口等)。

【讨论】:

    【解决方案2】:

    其实我发现了问题所在。

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

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

    一个愚蠢的错误!

    【讨论】:

      【解决方案3】:

      看来你的代码没问题。

      尝试将此定义添加到您的配置文件中。我不太确定,但我们仍然可以尝试:

      QTPLUGIN += qpng
      

      到你的 mainwindow.cpp

      #include <QtPlugin>
      Q_IMPORT_PLUGIN(qpng)
      

      【讨论】:

      • 感谢您的回答。一旦我这样做了,链接就会失败,因为他没有找到“libqpng”。
      • @mosg 我也尝试了.bmp 和.jpg,但没有结果。它至少不应该支持这两个吗?我会试着弄清楚它是用哪些选项编译的。
      • @ereOn 您是否尝试使用图像的绝对路径(具有不同格式)?我的意思是不使用资源...
      • 还尝试从源代码构建您自己的 Qt 库...或者您这样做是为了?看看使用图像的例子......我记得一件事:在linux上尝试:QIcon(“/resources/image.png”),没有“:”符号......
      • @mosg 我刚刚从源代码编译了最后一个版本,但仍然没有显示图像。会不会和Qt3冲突?!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      • 2014-04-29
      • 1970-01-01
      • 2021-12-09
      • 2019-08-10
      • 1970-01-01
      相关资源
      最近更新 更多