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