2

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

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

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

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

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

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

4

1 回答 1

1

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

来自帖子的片段:

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

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

This will work for QT applications as well, but you can't set the style from within the application like you're trying (app.setStyle(QStyleFactory::create("oxygen");) You'll have to use a slightly messier method:

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

This will read the argument from the environment, and won't make a whole new Oxygen theme instance, (assuming you've set the KDEHOME environment to somewhere in your project, and you've already customized that) and will then use that KDEHOME to read the colors from and use the Oxygen theme.

Maybe they'll change this for QT5... (The ability to set a style programmatically)

于 2014-01-08T16:06:05.623 回答