Qt 6 功能路线图已发布

Lars Knoll,KHTML 引擎的创建者、Qt 项目的项目经理和 Qt 公司的技术总监, 我告诉 关于创建 Qt 框架的下一个重要分支的计划。 一旦 Qt 5.14 分支的功能完成,开发将重点为 Qt 6 的发布做准备,预计将于 2020 年底发布。

Qt 6 的开发将着眼于确保与 Qt 5 的兼容性,但可能会出现个别问题,因为计划的架构更改和清理将不可能在不失去一定程度的兼容性的情况下实现。 为了顺利过渡,Qt 6 的一些功能计划以简化形式包含在 Qt 5.14 和 Qt 5.15 LTS 版本中。 工具包还将准备好简化向 Qt 6 的迁移。

下一个重要分支的主要目标包括使功能符合 2020 年的要求、清理代码库并简化项目维护。 预期变化:

  • QML 的重大现代化:
    • 强大的打字支持。
    • 能够将 QML 编译为 C++ 表示形式和机器代码。
    • 使完整的 JavaScript 支持成为一种选择(使用全功能的 JavaScript 引擎需要大量资源,这阻碍了 QML 在微控制器等设备上的使用)。
    • 拒绝 QML 中的版本控制。
    • 统一 QObject 和 QML 中重复的数据结构(将减少内存消耗并加快启动速度)。
    • 远离数据结构的运行时生成,转而使用编译时生成。
    • 通过使用私有方法和属性隐藏内部组件。
    • 改进了与开发工具的集成,以进行重构和编译时错误诊断;
  • 添加新的抽象层,即渲​​染硬件接口 (RHI),以提供各种图形 API 的无缝使用,包括 OpenGL、Vulkan、Metal 和 Direct 3D(之前的 Qt 仅支持 OpenGL)。 所有现有的渲染基础设施都将转换为使用 RHI,包括 QPainter、Qt Quick Scenegraph 和 Qt3D。 还计划添加Qt Shader Tools模块,支持各种着色器开发语言,并在构建阶段和运行时提供着色器的交叉编译;
  • 准备统一的 API,用于创建结合 2D 和 3D 图形元素的用户界面。 新的 API 将允许您使用 QML 定义 3D 界面元素,而无需使用 UIP 格式。 用于将 3D 内容与 Qt Quick 集成的新界面计划解决诸如将 QML 与 Qt 3D 或 3D Studio 内容集成的高开销以及无法在 2D 和 3D 之间同步动画和帧级转换等问题。 组合嵌套 2D 和 3D 渲染将使用新的渲染引擎来实现。 预计在 Qt 3 版本中提供支持 5.14D 的新 Qt Quick 预览版;
  • 添加在编译时处理图形相关资源的工具,例如将 PNG 图像转换为压缩纹理或将着色器和网格转换为针对特定硬件的优化二进制格式;
  • 嵌入统一的主题和样式引擎,让您实现基于 Qt Widgets 和 Qt Quick 的应用程序外观,原生于不同的移动和桌面平台;
  • 用于创建用户界面的工具的统一。 为了避免功能重复和停止交付两个单独的产品,预计 Qt 3D Studio 的功能将集成到 Qt Design Studio 中,其中许多子系统和用于连接插件的框架都构建在与 Qt XNUMXD Studio 相同的代码库上Qt 创建者。
    Qt Design Studio 还计划提供与 Photoshop、Sketch、Illustrator、Maya 和 3D Max 等内容创建包的高质量集成。 统一开发工具包支持的主要语言有C++、QML和Python。 统一还意味着能够从 Qt Creator 访问界面设计工具,并为界面设计人员提供开发人员工具的功能,例如在设备上编译项目或测试应用程序;

  • 决定使用 CMake 而不是 QMake 作为构建系统。 对使用 QMake 构建应用程序的支持将保留,但 Qt 本身将使用 CMake 构建。 选择 CMake 是因为该工具包在 C++ 项目开发人员中广泛使用,并且在许多集成开发环境中得到支持。 开发了Qbs装配系统,号称是QMake的替代品, 已停产;
  • 开发期间过渡到 C++17 标准(之前使用 C++98)。 Qt 6 计划实现对许多现代 C++ 功能的支持,但不会失去与基于遗留标准的代码的向后兼容性。
  • 能够从 C++ 使用为 QML 和 Qt Quick 提供的一些功能。 特别是,将提出 QObject 和类似类的新属性系统。 用于处理绑定的引擎将从 QML 集成到 Qt 核心中,这将减少绑定的负载和内存消耗,并使它们可用于 Qt 的所有部分,而不仅仅是 Qt Quick;
  • 继续努力扩展对 Python 和 WebAssembly 等其他语言的支持;
  • 通过分解成更小的组件并减小基础产品的尺寸来进行重组。 开发人员工具和自定义组件将作为通过新目录存储分发的附加组件提供。 第三方开发者对 Qt 的补充(无论是免费的还是付费的)也将被接受分发。

来源: opennet.ru

添加评论