【问题标题】:How to get current theme name from linux desktop environment using Qt C++如何使用 Qt C++ 从 linux 桌面环境中获取当前主题名称
【发布时间】:2017-05-21 00:48:08
【问题描述】:

我打算使用Qt开发一个应用程序,我想使用/usr/share/icons目录下的图标,但是我不知道如何让图标自动改变当桌面环境主题更改时。

我使用QIcon,并通过绝对路径声明图标路径,例如我想使用Numix-Circle图标主题,所以我这样做了:

QPushButton *button = new QPushButton ;
QIcon icon ( '/usr/share/icons/Numix-Circle/48/apps/gnome-do.svg' ) ;
button -> setText ( "" ) ;
button -> setIcon ( icon );

但是图标不会随着DE主题的变化而变化,而且如果用户不安装主题,应用中的图标也不会显示。

有没有办法从桌面环境中获取图标?或其他方式使应用程序中的图标响应?

【问题讨论】:

  • 我发现从QIcon::themeName()返回的主题名称是adwaita,但我现在使用的是numix。稍后我将再次尝试 fromTheme 功能。

标签: c++ linux qt themes desktop-application


【解决方案1】:

QIcon::fromTheme("gnome-do") 将从当前主题返回一个 QIcon。在 KDE 中,如果您更改图标主题,图标也应该更新以匹配新主题。

【讨论】:

  • 也许......但这在其他 DE(如 Xfce)中不起作用。因此,必须有一种方法让基于 Qt 的非 KDE 应用程序在图标主题更改时得到通知。
  • 这由内部图标引擎来实现。更改图标主题时,Xfce 上的 KDE 应用程序中的图标是否会更改?
猜你喜欢
  • 2016-05-02
  • 1970-01-01
  • 2016-12-26
  • 1970-01-01
  • 1970-01-01
  • 2017-03-10
  • 1970-01-01
  • 2020-02-04
  • 1970-01-01
相关资源
最近更新 更多