在Qt Creator中使用Qt标准图标

24
我想使用Qt标准图标(如此)。我找到了很多关于如何在代码中运行时设置图标的例子。
但是,在Qt Creator中,我应该如何设置“标准图标名称”(例如application-exit)?这个博客说,我只需将主题设置为相应的名称即可。但我没有这样的主题属性,我会得到一个弹出窗口和一个资源(如下所示的屏幕截图)。
哪里是应用“标准名称”的正确位置(例如application-exit)?
从2.4.x更新到Qt Creator 2.5.2后,我获得了上述博客中提到的“主题”属性,但仍然看不到图标。 还需要什么才能使图标可见?

Theme now available with Creator 2.5.2

Remark Qt 4.8.1已更新至2.5.2,适用于Windows 7。

3个回答

18

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

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

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

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


1
在其他操作系统中,有相当大量的标准图标可用于工具栏等。而且还有这些图标的主题。例如:http://commons.wikimedia.org/wiki/Tango_icons http://gnome-look.org/content/show.php/?content=122078 你可以看到,这是一个非常好的概念,因为所有使用这些标准图标的应用程序都可以很好地适应任何由用户自定义的桌面环境。 - ypnos
请注意,我之前的评论是回复已被删除的评论。对于造成的混淆,我感到抱歉。 - ypnos

7

@ypnos提供了一个解决问题的多种方法的链接。我最喜欢的是最后一个 - 创建自定义图标主题。作者列出了三个优点 (适用于所有平台, 可调整大小, 涵盖所有所需图标) 和两个缺点 (与系统图标主题不一致, 实现起来很麻烦)。 在这里,我建议改进以消除缺点。

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

现在,使用“Theme”属性,您可以在Qt Designer中定义图标,如问题中所示。对于在Linux下开发的人,系统图标将在Designer中正确显示(假设图标集使用标准图标名称)。这是本地外观(图标将在您的系统设置中配置)。这使您免于编写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上与系统图标一致。

-3

很遗憾,Qt Designer 中的这个图标主题选项在 Windows 上不可用。


你的意思是它在Windows下无法工作吗?因为正如上面的截图所示,设置主题是可能的。对我来说,“不可用”意味着选项根本不可用。这是Qt团队的设计决策还是一个错误?有没有一些更详细的参考资料可以提供更多细节? - Horst Walter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接