我在我的 Kubuntu 12.10 linux 机器上安装了 Qt5 和 Qt4,并注意到以下内容:
- 使用 Qt4 编译的程序具有原生的 KDE 外观。我使用默认 KDE 的Oxygen主题,我的程序也是如此(注意带有标题的平滑渐变和聚焦小部件的蓝色选择);
- 但是当使用 Qt5 重新编译而不对代码进行任何更改时,它使用了不同的样式(似乎被称为Fusion)并且看起来很尴尬且不合时宜(见右图)
我想要的是非常简洁:我希望我的应用程序适合周围的系统,即始终看起来是原生的。使用 Qt4 时,我习惯于默认使用它。Qt5 在 Windows 中似乎也有正常的原生外观。但是我该怎么做才能在 Kubuntu 中也有同样的功能呢?而且,理想情况下,无处不在?我的意思是,我不想强制我的应用程序的 linux 版本严格使用Oxygen。我希望它使用当前在 KDE 中设置的主题:就像在旧的 Qt4 中一样。
似乎应用程序代码与此问题无关:我没有在其中使用任何 QStyle,它非常典型的 Qt 的 hello-world。但以防万一它在 GitHub 上。
UPD: @peppe已经就为什么会发生这个问题给出了非常充分的答案(KDE 中的氧气主题是针对 Qt4 编译的,并且不能被 Qt5 使用)。但是我仍在寻找有关如何解决此问题的答案?我试图找到 Oxygen 主题源来玩,但除了Firefox 主题之外什么也没找到。
UPD2: @kwirz提出了一个有趣的想法:强制应用使用 GTK+ 主题,并在 KDE 设置中启用oxygen-gtk,使 GTK 窗口看起来类似于 Oxygen。一方面,它确实看起来更接近氧气:
但另一方面,我们已经看到了细微的差别:只读行编辑变成灰色,焦点按钮仍然没有突出显示等。不幸的是,当尝试将此技术应用于更复杂的小部件时,会出现更多的伪影(尤其是在组合框上)和微调器):
因此,这种技术似乎不能成为一个完整的解决方案,但对于简单的情况仍然非常有用。