新萄京操作系统

 新萄京操作系统     |      2020-03-31

计划于上个月发布的 Qt 5.14 经过短暂的推迟后,现在终于发布了稳定版。该版本以及明年的 Qt 5.15 LTS 开始为发布 Qt 6 做铺垫。开发团队表示,尽管他们正在努力通过标记不推荐使用的功能以使将来尽可能平稳地移植到 Qt 6,但现在还是引入了一些新功能。

下一代 QML

QML 和 Qt Quick 是过去几年推动 Qt 框架持续增长的主要技术。通过使用这些技术以直观的方式创建用户界面也是其产品的独特卖点。

不过 QML 毕竟是为 Qt 5 而创建的,存在一些怪异的操作及其局限性。因此开发团队计划借 Qt 6 以实现对 QML 的重大改进。目前计划的主要变化是:

  • 引入强大的类型系统
  • 使 JavaScript 成为 QML 的可选功能
  • 移除 QML 的版本控制功能
  • 移除 QObject 和 QML 之间的重复数据结构
  • 避免在 runtime 阶段生成数据结构
  • 支持将 QML 编译为高效的 C++ 和原生代码
  • 支持隐藏实现细节
  • 更好的工具集成

(文/开源中国)    

与 Qt 5 的兼容性和增量改进

保持与旧版本的兼容性非常重要,官方表示这也是他们开发 Qt 6 的主要要求之一。团队在博客中说到,他们确实会删除 Qt 的某些弃用功能,但也会确保用户所需的功能不受影响。这意味着关键功能,例如 Qt Widgets 和大部分用户使用的其他功能都将保持其可用性。

团队还计划对 Qt 5 系列中无法完成的核心类和功能进行渐进式改进,目的是保持完全的源代码兼容性,但由于对二进制兼容性没有要求,因此团队会继续实现在 Qt 5 中无法完成的代码清理和改进。

最终的目标应该是 Qt 6 与 Qt 5.15 LTS 有足够的兼容性,如此一来开发者就可以轻松维护一个同时针对这两个版本编译的大型代码库。

(文/开源中国)    

虽然 Qt 已将 OpenGL 用作基本图形 API,但现在它开始支持更广泛的图形 API。Qt 5.14 包括一个独立于图形 API 的场景图渲染器(通过称为 Qt 渲染硬件接口的抽象层)作为选择功能。通过它,我们可以在 Vulkan、Metal 和 Direct3D 11 之上运行 Qt Quick 应用程序。因此,我们可以选择直接在操作系统提供的原生图形 API 之上运行 Qt 应用程序。这也将使升级到 Qt 6 更容易,因为渲染硬件接口将是在 Qt 6 中渲染图形的标准方法。

下面将介绍在 Qt 中进行的一些关键技术变更,以使其能适应未来几年的技术发展。

Qt 5.14 更新内容概述:

对 C++ API 的增强

C++ 在过去几年里发生了巨大的变化。Qt 5 使用的还是 C++98 标准,到现在 Qt 6 已经开始使用 C++ 17。C++ 17 提供了更多的开箱即用功能,而这在 Qt 5 中是无法使用的,所以 Qt 6 的目标是更好地集成 C++ 17 的新功能,并保持对 Qt 5 的兼容性。

除此之外,团队还计划通过 C++ 为 QML 和 Qt Quick 引入一些新功能,致力于为 QObject 和相关类引入一个新的属性系统,将 QML 中的绑定引擎集成到 Qt 的内核,并可通过 C++ 进行使用。

新的属性系统和绑定引擎将大大减少绑定的 runtime 开销和内存消耗,并使 Qt 的所有其他部分都可以访问它们,而不仅仅是 Qt Quick。

详细内容请查看 https://www.qt.io/blog/

Qt 6 还会对代码库进行清理并使其更易于维护。因此,重点将放在那些需要在 Qt 内进行架构变更的项目中,这带来的影响就是,如果不破坏与 Qt 5.x 某种程度的兼容性就无法完成这些变更。

Qt Quick 3D 也是一个新模块,开发团队表示正在努力提供一个高级 API,用于从 Qt Quick 为用户界面创建 3D 内容。简而言之,现在我们可以使用 QML 来定义 3D 场景,从而允许对 UI 的 2D 和 3D 部分使用基于 QML 的方法。这种新方法将使我们可以使用一个runtime (Qt Quick)、一个公共场景图和一个动画框架。我们将能够在一个设计工具 Qt Design Studio 中以图形方式设计所有这些元素。

按照官方的说法,Qt 6 会保持对 Qt 5 的延续性 —— 继续他们在 Qt 5 系列中所做的工作,并尽可能不对 Qt 5 用户在使用方面造成破坏性影响。但 Qt 6 毕竟是作为一个新的主要版本面世,它也有自己的使命,它将为我们提供更高的自由度来实现新功能,以更好地支持当前和未来的要求,而这不是当前 Qt 5 系列能满足的。