【问题标题】:Qt/C++: Icons not showing up when program is running in KubuntuQt/C++:程序在 Kubuntu 中运行时图标不显示
【发布时间】:2013-01-26 15:42:10
【问题描述】:

我做了我需要做的一切:

  1. 在资源文件中添加了一个图标
  2. 主文件中的初始化资源:Q_INIT_RESOURCE(images);
  3. 设置图标:ui->action_New->setIcon(QIcon(":/images/about_me.png"));

但是当我编译和运行我的应用程序时仍然看不到图像(我使用 Kubuntu 12.04 和 Qt 4.8.1)。这是一个小测试项目:http://www27.zippyshare.com/v/45362924/file.html。出了什么问题以及如何解决?

【问题讨论】:

  • QAction 在哪里使用,在 QMenu 中?必须明确告知某些 DE 显示菜单图标。
  • @cmannett85:是的,在QMenu
  • Kubuntu 中的其他应用程序(特别是 Qt 应用程序)是否显示菜单图标?您是否确认可以通过尝试使用 QLabel 显示图像来正确加载图像?
  • @cmannett85:我试过这个:ui->label->setPixmap(QPixmap(QString::fromUtf8(":/images/about_me.png"))); 但仍然看不到图标,我的意思是即使在 QLabel 上
  • Opps,这是我的错:":/images/about" 解决了所有问题,谢谢:D

标签: c++ qt qicon


【解决方案1】:

注意.qrc 文件中的alias 位。

为了简单起见,我更喜欢设置<qresource prefix="/">

<RCC>
   <qresource prefix="/">
      <file alias="about me">images/about_me.png</file>
      <file alias="BSD License">otherfiles/LICENSE.txt</file>
      ... 
   </qresource>
</RCC>

这样您就无需费心记住使用资源的完整路径

ui->action_New->setIcon(QIcon(":/about me"));    
this->setWindowIcon(QIcon(":/about me"));
...

QFile lfile (":/BSD License");
if(lfile.open(QIODevice::ReadOnly){
  ...
}

注意:我并不是说在别名中使用空格是一个好主意或坏主意,但它确实有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 2013-06-04
    相关资源
    最近更新 更多