- 使用Qt4编译的程序具有本地的KDE外观和感觉。我使用默认的KDE的Oxygen主题,我的程序也是(请注意标题平滑渐变和焦点小部件的蓝色选择);
- 但是,如果不更改任何代码使用Qt5重新编译,它将使用不同的样式(似乎被称为Fusion),看起来很尴尬、不协调(请参见右侧图片)。
我想要的很简单:我希望我的应用程序始终适应周围的系统,即始终呈现本地外观。当使用Qt4时,我已经默认拥有了这一点。Qt5在Windows中似乎也有普通的本地外观。但是,我需要做什么才能在Kubuntu以及理想情况下任何地方都达到相同的效果呢?我的意思是,我不想强制Linux版本的应用程序严格使用Oxygen,我希望它使用当前在KDE中设置的主题:就像在Qt4中一样。
似乎应用程序代码与此问题无关:我没有在其中使用任何QStyle,它基本上是典型的Qt的hello-world。但以防万一,它在GitHub上。
更新:@peppe在这里给出了一个相当充分的答案来解释为什么会出现这个问题(KDE中的Oxygen主题是针对Qt4编译的,无法使用Qt5)。但我仍然在寻找如何解决这个问题的答案?我试图找到Oxygen主题源代码来尝试修改,但除了Firefox主题外,没有找到任何其他东西。
更新2:@kwirz提出了一个有趣的想法:强制应用程序使用GTK+主题,并在KDE设置中启用oxygen-gtk,使GTK窗口看起来类似于Oxygen。一方面,它确实更接近Oxygen:
但另一方面,我们已经看到了一些细微的差异:只读行编辑器变灰色,焦点按钮仍未高亮显示等。不幸的是,当尝试将此技术应用于更复杂的小部件时,甚至会出现更多的伪影(特别是在组合框和微调器上):
因此,这种技术似乎不能成为完整的解决方案,但在简单情况下仍然非常有用。