linux - native KDE 寻找 Qt 5 应用程序

标签 linux qt kde-plasma qt5

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

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

Native look of Qt4 app NOT native look of Qt5 app

我想要的是非常直截了当的:我希望我的应用程序适合周围的系统,即看起来总是原生的。在使用Qt4的时候,我习惯默认有这个。 Qt5 在 Windows 中似乎也具有正常的原生外观。但是我必须做些什么才能在 Kubuntu 中也有同样的东西?而且,理想情况下,无处不在?我的意思是,我不想强​​制我的应用程序的 Linux 构建严格使用 Oxygen。我希望它使用当前在 KDE 中设置的主题:就像在旧的 Qt4 中一样。

似乎应用程序代码与此问题无关:我没有使用其中的任何 QStyle,它非常典型的 Qt 的 hello-world。但以防万一 it's on GitHub

UPD: @peppe has given 关于为什么会出现此问题 的回答非常充分(KDE 中的 Oxygen 主题是针对 Qt4 编译的,Qt5 无法使用)。 但我仍在寻找关于如何解决这个问题的答案?我试图找到 Oxygen 主题源来玩弄,但除了 Firefox theme 之外没有找到任何东西。

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

Semi-native look of Qt5 app using oxygen-gtk

但另一方面,我们已经看到了细微的差别:只读行编辑变为灰色,聚焦按钮仍未高亮显示等。不幸的是,当尝试将此技术应用于更复杂的小部件时,会出现更多伪像(尤其是在组合框和微调器上):

Artifacts on QComboBox and QTimeEdit using oxygen-gtk

所以看起来这种技术不是一个完整的解决方案,但在简单的情况下仍然非常有用。

最佳答案

Oxygen 是 KDE 的一部分,因此您可以在那里找到它。这不是一个独立的主题。您不能针对 Qt 5 构建 KDE,它不受支持。 KDE 的下一个主要版本 (KDE 5) 将使用 Qt 5。

所以现在,您绝对无能为力。如果您希望您的应用程序在 KDE 4 中看起来和运行良好,请使用 Qt 4。

关于linux - native KDE 寻找 Qt 5 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14880032/

相关文章:

linux - 在 www 中创建用于下载 CentOS 的临时目录

c++ - QGraphicsView 可能的错误?

qt - 如何通过拖动来旋转qml矩形?

python - PyQt4-QNativeImage : Unable to attach to shared memory segment

Android 模拟器 Controller 消失

linux - 适用于 Linux 的 Google Earth 插件替代品

linux - 在 Linux 机器中共享文件夹以在数据库目录中使用它

c++ - 将 QString 绘制到 QImage 对象上时出现对齐问题

linux - Eclipse - 无法设置首选项

linux - 有人可以向我解释一下 "read var1 _ <<(ls -1l | wc -l); echo $var1"