在纯Qt应用程序中使用KDE系统主题



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

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

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

但我不知道有任何类似的方法来设置配色方案,无论如何这有点丑陋。

有趣的是,我已经在同一台机器上开发了一些 PyQt4 应用程序,它们可以很好地接收systemsettings的变化。 我不太确定为什么C++ Qt4应用程序的行为会有所不同。

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

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

帖子截图:

所以你想用与KDE其他部分不同的配色方案开始Amarok吗? 您可以通过为其设置一组不同的设置来执行此操作。

打开 Konsole,然后输入"export KDEHOME=$HOME/.kde4-amarok/" 然后运行"系统设置"并配置您希望Amarok的外观(配色方案等) 最后,运行"amarok"来启动Amarok本身。

这也适用于QT应用程序,但你不能像你正在尝试的那样从应用程序内设置样式(app.setStyle(QStyleFactory::create("oxygen");)你将不得不使用一个稍微混乱的方法:

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

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

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

最新更新