【问题标题】:Using KDE System Theme in Pure Qt Application在纯 Qt 应用程序中使用 KDE 系统主题
【发布时间】:2013-11-15 05:47:02
【问题描述】:

我正在开发一个 Qt4 应用程序并在 gnome 下运行它,但我真的希望它使用 KDE 系统主题(氧气)和配色方案(黑曜石海岸)。不幸的是,该应用程序似乎没有响应 systemsettings 中的更改。

我至少能够通过设置 QStyle 让应用程序以编程方式使用我想要的主题:

QApplication app( argc, argv );
app.setStyle(QStyleFactory::create("oxygen"));

但我不知道有任何类似的方法来设置配色方案,反正这有点难看。

有趣的是,我已经在同一台机器上开发了一些 PyQt4 应用程序,它们在systemsettings 中进行了更改就可以了。我不太确定为什么 C++ Qt4 应用程序的行为会有所不同。

另一个注意事项:我注意到通过 gnome 对话框更改窗口外观会影响我的 C++ qt 窗口的外观 - 所以也许 Gnome 以某种方式覆盖了我的 KDE 配置?

【问题讨论】:

  • 如果配置有问题,这可能更适合超级用户。最好尝试一个只安装了 KDE 的干净 VM,看看它是否按预期工作。
  • 对不起,我应该补充一点,我已经在仅运行 KDE 的机器上运行了该应用程序,它会按预期响应配置更改。

标签: c++ qt qt4 gnome kde


【解决方案1】:

我找到的唯一解决方案是让环境为您完成工作,如此处所述:https://forum.kde.org/viewtopic.php?f=17&t=90720

来自帖子的片段:

所以您希望以与 KDE 的其余部分不同的配色方案来启动 Amarok? 您可以通过为其设置一组不同的设置来做到这一点。

打开Konsole,输入“export KDEHOME=$HOME/.kde4-amarok/” 然后运行“systemsettings”并配置您希望 Amarok 的显示方式(配色方案等) 最后,运行“amarok”来启动 Amarok 本身。

这也适用于 QT 应用程序,但您不能像尝试那样在应用程序中设置样式 (app.setStyle(QStyleFactory::create("oxygen");) 您必须使用稍微麻烦一点的方法:

sys.argv.append("--style=Oxygen")

这将从环境中读取参数,并且不会创建全新的 Oxygen 主题实例(假设您已将 KDEHOME 环境设置到项目中的某个位置,并且您已经对其进行了自定义)和然后将使用 KDEHOME 读取颜色并使用 Oxygen 主题。

也许他们会为 QT5 改变这一点...(以编程方式设置样式的能力)

【讨论】:

  • 效果很好,谢谢!除了 sys.argv.append 在 C++ 中不起作用
猜你喜欢
  • 2011-05-27
  • 1970-01-01
  • 2011-01-28
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 2013-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多