Qt 6.1 的新功能
Qt 6.1 中的新增和恢复模块
Qt 6.1 新增了以下模块:
Active Qt 模块
Active Qt 提供 ActiveX 和 COM 支持,使 Windows 平台上的 Qt 开发人员能够:
- 在其 Qt 应用程序中访问和使用任何 ActiveX 服务器提供的 ActiveX 控件和 COM 对象。
- 将 Qt 应用程序作为 COM 服务器提供,其中任意数量的 Qt 对象和控件均可作为 COM 对象和 ActiveX 控件使用。
Qt Charts 模块
Qt Charts 目前仅支持使用 OpenGL 进行系列渲染(AbstractSeries.useOpenGL)。若使用其他图形 API 进行渲染,此类系列在Qt Quick 中将无法显示。
Qt Data Visualization Module
Qt Data Visualization 仅支持 OpenGL RHI 后端,并需要将环境变量QSG_RHI_BACKEND 设置为opengl 。这既可以在系统级别进行,也可以在应用程序的main()中通过qputenv("QSG_RHI_BACKEND", "opengl"); 进行定义。
Qt Device Utilities 模块
仅支持网络功能。
Qt Lottie 模块
该 Qt Lottie Animation 该模块已移植到 Qt 6 和 CMake 构建系统。
Qt SCXML 此外,Qt StateMachine
Qt State Machine 包含 Qt 5 中Qt Core 的一部分 API。安装程序中的Qt State Machine软件包同时包含 Qt SCXML 和 Qt State Machine 模块。
Qt Virtual Keyboard 模块
该 Qt Virtual Keyboard 模块已移植到 Qt 6 和 CMake 构建系统。
- 新的词典管理器允许应用程序实现用户自定义词典(例如电话簿)。
- VirtualKeyboardSettings 中新增了若干属性。
- 新增了对 Cerence Handwriting(T9 Write)和 XT9 的支持。
Qt 6.1 的新功能
Qt Core 模块
- QFuture 具有用于创建各种状态的期货的新便利函数,现在可以在上下文对象的线程中调用其延续。
- qfloat16 可以未初始化地构造。
- <QtMath> 提供了 `qHypot()`,将 `std::hypot()` 推广为可接受任意多个参数,并支持 `qfloat16` 参数。
- qAddOverflow()、qSubOverflow() 和qMulOverflow() 函数现在支持防溢算术运算。
- removeIf() 方法和erase_if() 的支持已扩展到更多类:
- QHash QMap 及其 Multi 变体,这些类的谓词既可接受 std::pair,也可接受容器自身的迭代器。
- QSet,该类还新增了一个接受(但忽略)位置提示的 insert() 重载,以兼容标准库。
- QString,QByteArray 和QList ,它们还增加了对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(),其名称应该已经说明了一切。
- 已将 `QJniObject ` 和 `QJniEnvironment ` 作为公共 API 添加(主要用于 Android)。
- 对象属性绑定进行了 API 优化,并在Qt Core 类中添加了绑定——详情请参阅《属性绑定》博客文章。
Qt GUI 模块
- QColorSpace 现在可以将自定义传输函数设置为表格形式。
- QTextDocument 现在允许您设置资源提供函数,而无需通过继承QTextDocument 并重载 loadResource() 方法来实现。
- Vulkan API 封装类(QVulkanFunctions 、QVulkanDeviceFunctions )现在也公开了 Vulkan 1.1 和 1.2 核心 API。
- QVulkanInstance 中已添加相关新功能(supportedApiVersion()),允许在创建实例之前查询支持的实例级版本。
- 新增了QPainter::VerticalSubpixelPositioning 提示。该功能目前仅在 Freetype 字体后端上受支持,启用后可在垂直方向实现文本的亚像素定位,但会消耗部分内存并增加额外运算开销。 对于大多数用例,应保持此选项关闭,但在某些非常特定的情况下(例如,您希望将绘制元素在动态变换的绘图器上进行垂直对齐时),它可能会很有用。
Qt Widgets 模块
- QLabel 在QTextDocument 中为资源提供程序函数提供了 setter 和 getter 方法。请查阅Qt GUI 模块的变更记录以获取更多信息。
Qt Network Module
- QNetworkCookie 现在支持 SameSite 功能。
- 引入了QNetworkInformation :
- QNetworkInformation 目前通过系统 API 暴露系统的可访问性。
- 目前支持 Darwin、Windows、Android 以及 Linux 上的 NetworkManager。
- 为QSslSocket 及相关QSsl 类提供支持的TLS后端,已转换为基于插件的设计。
- QtNetwork 的“ssl”子模块中的公共类和私有类现已实现 TLS 实现中立,且不再暴露低级 API 或细节。
- 现有的 TLS 后端(OpenSSL、SecureTransport、Schannel)现在会报告其支持的类、功能和协议。
- (对于使用 Qt XML 的应用程序而言)可以提供自己的后端,供QSslSocket 及相关类使用。
Qt Qml 模块
- 新增了QJSPrimitiveValue 和QJSManagedValue ,与仅使用QJSValue 相比,可以更精细地控制 JavaScript 的执行。
- CMake 函数 qt6_add_qml_module(仍处于技术预览阶段)添加了一个 qmllint 目标,该目标会对目标的 QML 文件运行 qmllint。
- 在QQmlPropertyMap 中添加了
freeze()和 multi-insert()。
Qt Quick 3D 模块
- 技术预览:“实例化渲染”(Instanced Rendering),这是一种通过不同变换来绘制同一对象多个实例的优化方式。该功能被视为功能完整,但仍可能根据用户反馈进行微小的 API 调整。计划在 Qt 6.2 中最终定稿。
- 技术预览:3D 粒子,这是一个用于向 3D 场景添加粒子特效的 API。该 API 已准备就绪可供测试,但功能尚未完全完善。
- Qt Quick 3D 现已支持形态目标动画,即所有顶点在两组位置之间进行插值的动画,从而营造出一种形状逐渐转变为另一种形状的效果。
Qt 5 兼容性模块
虽然 QtGraphical Effects 并未随 Qt 6 一起发布,但已有许多特效被移植到新的图形架构中,并添加到了 Qt5Compat 模块中。例如,要使用 `DropShadow`,请在 QML 中添加导入语句`Qt5Compat.GraphicalEffects`。 一些依赖动态着色器生成的复杂效果(例如多种模糊变体)已被移除。
API 变更列表
以下页面概述了 Qt 6.1 中的 API 变更:
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.