Qt 6.1 新功能

Qt 6.1 新增和恢复的模块

Qt 6.1 增加了以下模块

Active Qt 模块

Active Qt 提供了 ActiveX 和 COM 支持,允许 Windows 开发者

  • 访问和使用任何 ActiveX 服务器提供的 ActiveX 控件和 COM 对象,并在其 Qt 应用程序中使用。
  • 将它们的 Qt 应用程序作为 COM 服务器提供,其中任何数量的 Qt 对象和小部件都可以成为 COM 对象和 ActiveX 控件。

Qt 图表模块

Qt Charts 仍然只支持 OpenGL 用于加速序列 (AbstractSeries.useOpenGL)。如果使用其他图形 API 进行渲染,此类序列不会在 Qt Quick 中渲染。

Qt 数据可视化模块

Qt Data Visualization 仅支持 OpenGL RHI 后端,并且需要设置环境变量 QSG_RHI_BACKENDopengl。这可以在系统级别完成,或者在与 qputenv("QSG_RHI_BACKEND", "opengl"); 中的应用程序的 main() 中定义。

Qt 设备工具模块

仅支持网络功能。

Qt Lottie 模块

Qt Lottie Animation 模块已移植到 Qt 6 和 CMake 构建系统。

Qt SCXML 和 Qt 状态机

Qt State Machine 包含了 Qt 5 中 Qt Core 部分的一部分 API。安装程序中的 Qt State Machines 软件包包含 Qt SCXMLQt State Machine 模块。

Qt 虚拟键盘模块

Qt Virtual Keyboard 模块已移植到 Qt 6 和 CMake 构建系统。

  • 一个新的字典管理器允许应用程序通过定义字典(如电话簿)来实现用户定义字典。
  • VirtualKeyboardSettings 中有新的属性。
  • 支持 Cerence 手写(T9 写入)和 XT9。

Qt 6.1 新特性

Qt 核心模块

  • QFuture 具有创建各种状态未来的新便利函数,并现在可以在上下文对象的线程中调用其后续操作。
  • qfloat16 可以构造未初始化的。
  • <QtMath> 提供了 qHypot(),将 std::hypot() 泛化为任意多的参数,并支持 qfloat16 参数。
  • 现在函数 qAddOverflow()、qSubOverflow() 和 qMulOverflow() 支持越界安全算术。
  • removeIf() 方法和 erase_if() 的支持现已扩展到更多类。
    • QHashQMap 及其多版本变体,其谓词可接受 std::pair 或容器自身的迭代器。
    • QSet 也可通过 insert() 重载获取插入操作,该重载接受位置提示(但忽略它),以与标准库兼容。
    • QStringQByteArrayQList 还获得了 erase() 支持,可删除指定值的所有实例。
    • QVarLengthArray 获得了 erase() 支持和 removeAll()、removeOne() 方法。
  • QStringView 的 API 现在包括 count()、contains()、indexOf()、lastIndexOf()、constBegin() 和 constEnd()。
  • QLocale 提供从枚举到 ISO 代码及反向映射:languageToCode()、scriptToCode()、countryToCode()、codeToLanguage()、.codeToScript() 和 codeToCountry()。
  • QSocketNotifier 现在支持更灵活的创建方式。
  • 增加了 QOperatingSystemVersion::version()、QMetaType::hasRegisteredDataStreamOperators() 和 QUntypedBindable::isReadOnly(),其名称或许已经足够说明问题。
  • 增加了 QJniObjectQJniEnvironment 作为公共 API(主要用于 Android)。
  • 对象属性绑定已获得 API 优化,并且绑定已添加到 Qt Core 类 - 有关具体情况,请参阅 Qt 6 中的属性绑定 博文。

Qt GUI 模块

  • QColorSpace 现在可以以表格的形式设置自定义转换函数。
  • QTextDocument 现在允许您设置资源提供器函数,而不是通过子类化 QTextDocument 并重载 loadResource() 来设置。
  • 现在,Vulkan API 包装器 (QVulkanFunctionsQVulkanDeviceFunctions) 也暴露了 Vulkan 1.1 和 1.2 核心API。
    • QVulkanInstance 中添加了相关的新的功能(supportedApiVersion()),以便在创建实例之前查询支持的实例级版本。
  • 添加了 QPainter::VerticalSubpixelPositioning 提示。目前这仅支持 FreeType 字体后端,并且当可用时,它将使文本在垂直方向的子像素定位成为可能,但这会牺牲一些内存和附加工作。对于大多数用例,这应该保持关闭状态,但是在某些非常特定的用例中,这可能非常有用,例如您需要在动态变换的 painter 上垂直对齐绘制的元素。

Qt Widgets 模块

Qt 网络模块

  • QNetworkCookie 现在支持 SameSite 功能。
  • 引入了 QNetworkInformation
    • QNetworkInformation 目前通过系统 API 暴露系统的可达性。
    • 目前支持 Darwin、Windows、Android 和 Linux 上的 NetworkManager。
  • TLS后端,为QSslSocket和相关的QSsl类提供支持,已经被转换为以插件为导向的设计。
    • 现在,“QtNetwork”的“ssl”子模块中的公共和私有类都是TLS实现中立的,并且不会被暴露给低级API/细节。
    • 现有的TLS后端(OpenSSL、SecureTransport、Schannel)现在报告它们支持的类、特性和协议。
    • (对于使用Qt的应用)可以提供自己的后端,供QSslSocket和相关类使用。

Qt Qml模块

  • 添加了QJSPrimitiveValueQJSManagedValue,以便在仅使用QJSValue时提供对JavaScript执行更细致的控制。
  • CMake函数qt6_add_qml_module(目前还处于技术预览阶段)添加了qmllint目标,该目标将对目标QML文件运行qmllint。

Qt Quick 3D模块

  • 技术预览:“实例渲染”,这是一种优化绘制具有不同变换的同一对象多个实例的优化方法。此功能被认为功能完善,但可能会根据用户反馈 undergo一些API的细微变化。它计划在Qt 6.2中完成。
  • 技术预览:3D粒子,这是一种向三维场景添加粒子效果的API。此API已准备好进行测试,但尚未功能完善。
  • Qt Quick 3D现在支持形状 Fetch targets 动画,即在两个位置集之间进行插值的动画,从而给人一种形状正在变化为另一个形状的印象。

Qt 5兼容性模块

虽然Qt图形效果不随Qt 6一起提供,但已将一些效果迁移到新的图形架构中,并添加到Qt5Compat模块中。例如,要访问DropShadow,请添加QML导入Qt5Compat.GraphicalEffects。一些复杂的效果,如模糊变体,依赖于动态着色器生成,已被删除。

API更改列表

这些页面包含Qt 6.1中API更改的概述。

© 2024 Qt公司有限公司。本文件中包含的文档贡献受各自所有者的版权保护。本文件中提供的文档受自由软件基金会发布的GNU自由文档许可证版本1.3的条款约束。Qt及其相应标志是Qt有限公司在芬兰和/或其他国家的商标。所有其他商标均为其各自所有者的财产。