使用Qt Creator中的Qt标准图标

时间:2012-09-06 12:00:24

标签: windows-7 icons qt-creator

我想使用Qt标准图标(as here)。我找到了许多如何set the icons programmatically(代码中的运行时)的例子。

<击> 但是,如何在Qt Creator中设置“标准图标名称”(例如application-exit)?这个blog here说,我只是将主题设置为相应的名称。但我没有这样的主题属性,我会得到一个资源弹出窗口(截图如下)。

在哪里应用“标准名称”(例如application-exit)?

从2.4.x更新到Qt Creator 2.5.2给了我上述博客的“主题”属性,但仍然没有可见的图标。 使图标可见还需要什么?

Theme now available with Creator 2.5.2

备注Qt 4.8.1,现已更新至2.5.2,Windows 7

3 个答案:

答案 0 :(得分:12)

主题图标仅在Linux / X11上受支持。在Windows和OS X上,您必须提供自己的图标。

此问题的解决方案是在QtCreator中设置主题名称(如示例所示)。然后,您必须在资源中的前缀“:/ icons”下提供相同别名的图标。您可以利用公共领域中可用集合中的图标,例如流行的Tango图标集。

如果您只定位Windows平台,则主题设置对您没用。如果您同时定位Linux / X11和其他平台,使用此解决方案,您将获得一个系统上的本机图标以及您自己提供的图标。

您可以在此处找到有关如何操作的非常好的解释: http://mithatkonar.com/wiki/doku.php/qt/icons

答案 1 :(得分:4)

@ypnos提出了一个很好的链接,有多种方法可以解决问题。我最喜欢的是最后一个 - Creating a custom icon theme。作者陈述了三个专业人士(适用于所有平台优秀调整大小涵盖所有需要的图标)和两个缺点(不一致系统图标主题实施屁股的痛苦)。 在这里,我建议改进以摆脱缺点。

我从github克隆了Tango iconset。存储库https://github.com/ppinard/qtango已经包含 index.theme 文件。但主要是,它带来了一个Python脚本generate_rcc.py,它可以自动生成*.qrc文件。我只需将subprocess.check_call()的参数从'--binary''--compress'更改为'-binary''-compress'。生成的文件包含绝对路径,但易于查找和替换。可以将此脚本用于任何iconset - 第一个艰苦的步骤已经解决。

现在,使用&#34;主题&#34;属性,您可以在Qt设计器中定义图标,如问题中所示。对于那些在Linux下开发的人来说, system 图标将在Designer中显示(假设iconset使用标准图标名称)。这是原生外观(图标可在系统设置中配置)。这使您免于ui->action_Open->setIcon(...)编码。

最后的调整是在 ui setup之前设置主题

MainWindow::MainWindow(QWidget *parent) :
  QMainWindow(parent)
{
#ifdef _WIN32
  QIcon::setThemeName("tango");
#endif

  ui = new Ui::MainWindow;
  ui->setupUi(this);

  ...
  // NO NEED FOR ui->action_Open->setIcon(...)
}

#ifdef当然可以调整为针对所有需要的平台,或者省略在所有平台上强制使用相同的图标,包括Linux。

因此,这种方法避免了所有费力的编码,结果与至少在Linux上的系统图标一致。

答案 2 :(得分:-1)

不幸的是,这个通过Qt Designer的图标主题选项在Windows上不可用。