我想使用Qt标准图标(as here)。我找到了许多如何set the icons programmatically(代码中的运行时)的例子。
<击>
但是,如何在Qt Creator中设置“标准图标名称”(例如application-exit
)?这个blog here说,我只是将主题设置为相应的名称。但我没有这样的主题属性,我会得到一个资源弹出窗口(截图如下)。
在哪里应用“标准名称”(例如application-exit
)?
击>
从2.4.x更新到Qt Creator 2.5.2给了我上述博客的“主题”属性,但仍然没有可见的图标。 使图标可见还需要什么?
备注Qt 4.8.1,现已更新至2.5.2,Windows 7
答案 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上不可用。