统一 Qt 4 和 Qt 5 程序的界面——简单方法


现在正是 KDE 4 和 KDE 5 家族(原谅我用了这个不严谨的说法,因为解释起来实在有点复杂)世代更替的时候。包括 kate 、Gwenview 等等在内的部分 KDE 应用已经基于 KDE Framework 5 。但是不知是因为功能特性已经冻结,还是开发者没有意识到或者没有精力解决这个问题, KDE 4 的界面设置对 Qt 5 程序是不生效的,再加上最初 Oxygen 主题标题栏的设计在外观上和窗口内容是整合的,一旦界面不统一,标题栏和内容不能融为一体,观感就会很糟糕。这个问题困扰了我很久,今日终于找到了解决办法。

首先,如果是运行着 KDE 4 的话, KDE 4 的界面配置文件是 ~/.kde4/share/config/kdeglobals (有的发行版可能是 .kde 而不是 .kde4),但是对于 Qt 5 程序来说,每次运行的时候读取的文件却是 ~/.config/kdeglobals 。KDE 4 的设置只会修改前者,所以 Qt 5 程序的界面并不会随之变动。到目前为止, Plasma 5 似乎也不会改 KDE 4 的界面配置文件。

于是想统一界面,方法就很简单了。首先需要装好分别针对 Qt 4 程序和 Qt 5 程序的同名主题,然后删掉当前桌面环境不会修改的配置文件,并且创建一个同名的、指向能够改变的配置文件的符号链接就可以了。

例如我现在用的是 KDE 4 ,首先装好 KDE 5 的 oxygen 主题(不同发行版的包名可能不同,在 Arch 上这个包现在就叫 oxygen )。

然后把 KDE 5 的界面配置文件改个名,备份起来:
mv ~/.config/kdeglobals ~/.config/kdeglobals~

最后,再创建指向 KDE 4 配置文件的符号链接:
ln -s ~/.kde4/share/config/kdeglobals ~/.config/kdeglobals

这样就大功告成了。再启动 Qt 5 程序,显示效果非常完美。

一会得把这方法写到 Arch 的 Wiki 上去……