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

时间:2013-11-04 15:03:53

标签: c++ qt qt4 gnome kde

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

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

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

但我不知道有任何类似的方法来设置配色方案,无论如何这都很难看。

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

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

1 个答案:

答案 0 :(得分:0)

我发现的唯一解决方案是让环境为您完成工作,如下所示: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改变这个......(以编程方式设置样式的能力)