当我创建“命令链接按钮”(QCommandLinkButton
)时,它有一个相对不错的绿色箭头图标。
我想知道还可以选择哪些漂亮的图标。当我尝试更改图标时,出现了[主题]
而不是路径或某个GUI选择对话框:
我还注意到了上下文菜单:
当我单击从主题设置图标时,再次期望一些GUI选择列表,但只得到一个文本字段:
我所想象的是:
绿色箭头是从哪个图标列表中获取的?
当我创建“命令链接按钮”(QCommandLinkButton
)时,它有一个相对不错的绿色箭头图标。
我想知道还可以选择哪些漂亮的图标。当我尝试更改图标时,出现了[主题]
而不是路径或某个GUI选择对话框:
我还注意到了上下文菜单:
当我单击从主题设置图标时,再次期望一些GUI选择列表,但只得到一个文本字段:
我所想象的是:
绿色箭头是从哪个图标列表中获取的?
QIcon::fromTheme
只在特定条件下工作。
它可以在QIcon::themeSearchPaths()
中找到QIcon::themeName()
的主题。
如果所需图标不在那里,Qt Designer将无法使用任何来自主题的命名图标。
但是...如果您检查目标系统的主题搜索路径并设置主题名称,则成功的可能性更大。
在Linux上,我想获取加号和减号图标。
我发现list-add.png
和list-remove.png
很合适。
https://github.com/GNOME/adwaita-icon-theme/tree/master/Adwaita/16x16/actions
http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html
我在系统上进行了定位并找到了这些内容:
/usr/share/icons/gnome/16x16/actions/list-add.png
...
/usr/share/icons/gnome/32x32/actions/list-add.png
/usr/share/icons/gnome/scalable/actions/list-add.svg
/usr/share/icons/oxygen/16x16/actions/list-add.png
...
fallback
图标强制使用 QIcon::fromTheme
在文件系统中找到图标:
ui->toolButton->setIcon(QIcon::fromTheme("list-add",
QIcon("/usr/share/icons/gnome/16x16/actions/list-add.png")));
ui->toolButton->setIcon(QIcon::fromTheme("list-add",
QIcon(":/list-add.png")));
qDebug() << "themeSearchPaths:" << QIcon::themeSearchPaths() << QIcon::themeName();
// themeSearchPaths: ("/usr/local/share/icons", "/usr/share/icons", ":/icons") "hicolor"
系统默认主题和目标部署机器可能没有我想要的图标...但几乎总是安装了gnome或oxygen图标桌面主题...
QIcon::setThemeName("oxygen");
widget->setIcon(widget->style()->standardIcon(QStyle::SP_BrowserReload));
http://doc.qt.io/qt-5/qstyle.html#StandardPixmap-enum
在目标系统上使用股票库可能是最快的。使用Qt内置的方法很容易理解和使用,但受到限制。使用资源文件可能是最稳健的方法,并提供无限选择的图标。
确保选择标准图标包,并考虑许可和归属等其他事项。
而且线上可用的图标充足:
https://www.quora.com/What-is-the-best-icon-library
https://www.google.com/search?q=open+source+icon+library
希望这可以帮助您。
QIcon::fromTheme
功能,它使用根据FDO规范命名的图标。
QStyle::standardIcon
: widget->setIcon(widget->style()->standardIcon(QStyle::SP_BrowserReload));
如果你需要的图标没有被Qt提供,你需要自己搭配。在这种情况下,资源系统是一种方便的方法,可以将它与可执行文件捆绑在一起。
最后但并非最不重要的,从用户体验角度考虑,除非你真的正在构建类似于Vista的向导,否则应该考虑使用QToolButton
。