22

我想使用 Qt Standard 图标(如此处)。我找到了许多如何以编程方式设置图标的示例(代码中的运行时)。

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

应用“标准名称” (例如)的正确位置在哪里application-exit

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

Creator 2.5.2 现在可以使用主题

备注 Qt 4.8.1,现在更新到 2.5.2,Windows 7

4

3 回答 3

16

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

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

如果您只针对 Windows 平台,主题设置对您毫无用处。如果您同时针对 Linux/X11 和其他平台,使用此解决方案您可以在一个系统上获得本机图标,并在其他系统上获得您自己提供的图标。

你可以在这里找到一个很好的解释:http: //mithatkonar.com/wiki/doku.php/qt/icons

于 2013-11-14T10:00:45.950 回答
7

@ypnos 建议与解决问题的多种方法建立一个很好的链接。我最喜欢最后一个 -创建自定义图标主题。作者陈述了三个优点(适用于所有平台出色的调整大小涵盖所有需要的图标)和两个缺点(与系统图标主题不一致实施起来很痛苦)。在这里,我建议改进以摆脱缺点。

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

现在,使用“主题”属性,您可以在 Qt 设计器中定义图标,如问题中所示。对于那些在 Linux 下开发的人,系统图标将显示在设计器中(假设图标集使用标准图标名称)。那是本机外观(图标将在您的系统设置中进行配置)。这使您从ui->action_Open->setIcon(...)编码中解放出来。

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

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 上与系统图标一致。

于 2016-11-08T10:00:16.950 回答
-2

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

于 2013-09-12T14:16:15.937 回答