首先,虽然针对相同的“结果”(为最终用户显示和交互),但 Xorg 和 Wayland 有很大不同:第一个是服务器,第二个是协议。
虽然已经积极开发了近十年,但将 Wayland 引入主流使用是最近才出现的(与已使用 30 多年的 X 相比),这意味着它仍然需要时间来实现“透明比较”的水平。
“主题化”不仅仅是移植的问题,因为 UI 的外观取决于这两个系统之间非常不同的方面。例如,在 X 上,客户端使用系统鼠标光标(除非被覆盖),而在 Wayland 上,光标必须由客户端设置(通常是工具包,在这种情况下为 Qt)。
Qt 在交叉兼容性支持方面做出了如此巨大的努力,它依赖于大量不易处理的系统挂钩(平台插件),尤其是在 Linux 环境中,它有无限可能的配置。预计这两者之间的外观会有所不同(至少现在是这样),并且可能是由于多个方面,其中许多方面取决于窗口环境、安装的主题和发行版的自定义。如果您使用的是自定义存储库,以及安装的 Qt 和 wayland 版本,了解您使用的 Linux 版本可能会有所帮助。
考虑到所有这些,尤其是在 Linux 上,没有“本机窗口”之类的东西。有一个符合当前窗口环境的外观,但有很多方面可能会干扰它,包括操作系统本身,有时 Qt 可以做的很少,特别是如果操作系统不太关心的话关于其他工具包或使用特定定制(参见 Ubuntu/Gtk 和该发行版的各种化身)。
由于 Qt6 的一些核心方面经历了深刻的变化(包括对 Wayland 的支持),可能需要更多时间才能达到 Qt5 目前所具有的相同级别的兼容性,这也取决于相关的 FOSS 社区将如何同时做出反应。暂时,除非您真的需要仅适用于 Qt6 的方面,如果您仍然开始使用 Qt 进行学习和开发,我建议您坚持使用 Qt5 一段时间:它是仍然被广泛使用并支持一般用途,这意味着您将更容易找到帮助和资源,而对于 Qt6,当问题实际上是由 Qt 引起时仍然存在疑问,它特定于某个版本或某些操作系统/平台方面(就像你的情况一样)。
每当您想切换到 Qt6 时,转换几乎是透明的,并且通常比 Qt4 和 Qt5 之间的转换更容易,只有少数需要更多关注的重要更改(例如,QAction 已移至 QtGui 模块) .
最后,关于 Qt 及其绑定的一些注意事项。
Qt6 是最新的稳定版
这是一个部分错误的假设:“稳定”并不意味着“最新”或“最好”。一个稳定的主要版本是最近发布的,但这并不意味着之前主要版本的最新稳定版本是“不太”稳定的。
Qt5 已经开发和广泛使用了近十年(许多核心功能在 Qt4 之前已经开发和“稳定”了几年),这意味着它非常稳定,尤其是与 Qt6 相比,仅在一年前发布,并且仍在进行深入开发:一些功能在几个月前已经[重新]引入并进行了根本性的更改,它仍然每天收到数十个错误报告。 p>
确实不过,Qt 一年前提出了questionable move,决定将 Qt5 分支的未来错误修复版本限制为仅针对商业许可证持有者,这引起了一些严重的担忧,因为 Qt6 尚未发布没有像 Qt5 那样稳定或功能齐全(虽然已经取得了重要进展,但仍然不是)。一个free fork exists的提案,但还没有发生任何事情。
也就是说,Qt5.15 是稳定的,如果您遇到的问题仅在商业版本中得到修复,那么您很可能无论如何都可以轻松解决它。
关于 PyQt/PySide 的差异,虽然 PySide 确实是“官方”支持的 python 绑定,但这并不是您在比较它们时应该考虑的唯一方面。除了许可证方面,这两个绑定的工作方式及其支持/功能也存在一些差异:例如,PyQt 添加了对更多 Python 方面的支持,尤其是具有 QUiLoader 无法以任何方式提供的uic.loadUi 功能.