原生KDE寻找Qt 5应用程序

NIA*_*NIA 20 linux qt kde qt5

我在我的Kubuntu 12.10 linux机器上安装了Qt5和Qt4,并注意到以下内容:

  • 使用Qt4编译的程序具有本机KDE外观.我使用默认的KDE的Oxygen主题,我的程序也是如此(注意平滑渐变与标题和蓝色选择的焦点小部件);
  • 但是当使用Qt5重新编译而不对代码进行任何更改时,它会使用不同的样式(似乎它被称为Fusion),它看起来很尴尬和不合适(见右图)

Qt4应用程序的原生外观不是Qt5应用的原生外观

我想要的是非常明确的:我希望我的应用程序适合周围的系统,即始终看起来原生.使用Qt4时,我习惯于默认使用它.Qt5似乎在Windows中也具有正常的原生外观.但是我在Kubuntu中也必须做同样的事情呢?理想情况下,无处不在?我的意思是,我不想强​​制我的应用程序的linux构建严格使用氧气.我希望它使用当前在KDE中设置的主题:就像它在古老的Qt4中一样.

看起来应用程序代码与此问题无关:我没有使用其中的任何QStyle,它几乎是典型的Qt的hello-world.但以防它是在GitHub上.

UPD: @peppe 给出为什么会出现这个问题的充分答案(KDE中的Oxygen主题针对Qt4编译而Qt5无法使用).但我仍在寻找如何解决这个问题的答案我试图找到Oxygen主题源来玩,但除了Firefox主题之外没有找到任何东西.

UPD2: @kwirz 提出了一个有趣的想法:强制应用程序使用GTK +主题,并在KDE设置中启用oxygen-gtk,使GTK窗口看起来类似于Oxygen.一方面,它确实看起来更接近氧气:

使用oxygen-gtk的Qt5 app的半原生外观

但另一方面,我们已经看到了一点点差异:只读线条编辑变为灰色,焦点按钮仍然没有突出显示等等.不幸的是,当尝试将此技术应用于更复杂的小部件时,会出现更多的工件(特别是在组合框上)和旋转器):

使用oxygen-gtk在QComboBox和QTimeEdit上的工件

因此,似乎这种技术不是一个完整的解决方案,但仍然非常有用的是简单的情况.

Nik*_* C. 14

氧气是KDE的一部分,所以你可以找到它.这不是一个独立的主题.你无法针对Qt 5构建KDE,它不受支持.KDE的下一个主要版本(KDE 5)将使用Qt 5.

所以现在,你无能为力.如果您希望您的应用程序在KDE 4中看起来和行为都很好,请使用Qt 4.


pep*_*ppe 9

这不是你的应用程序 - 只是Oxygen是针对Qt 4而不是Qt 5进行编译的,所以Qt 5不能使用它并且回退到默认样式("fusion").请记住,样式实际上是插件 - 即代码,受API/ABI要求的限制,以便加载和使用.你需要针对Qt 5编译的Oxygen风格.