本页内容

Qt 6.2 的新功能

Qt 6.2 中的新增和恢复模块

Qt 6.2 新增了以下模块:

  • QtQuick.Dialogs - 一个 QML 模块,在 Qt 未提供原生对话框的平台上,该模块提供原生对话框,并以Qt Quick 作为备用方案。本版本中提供了FileDialog 和FontDialog 。

Qt 6.2 重新引入了以下在 Qt 6.1 中未提供的模块。所列出的所有模块均已移植到 Qt 6 和 CMake 构建系统中。

有关各模块变更的更详细列表,请参阅《Qt 6 中 Qt 模块的变更》。

  • Qt Bluetooth
    • 已移除对 BlueZ 4 的支持。
    • 已移除 Win32 后端。因此,不再支持使用 Mingw-w64 的Qt Bluetooth 。
    • 已移除 QML API。
    • 已移除 QBluetoothTransferManager 及相关类。
    • QBluetoothLocalDevice 中与配对代理相关的功能已被移除。
  • Qt Multimedia
    • Qt Multimedia 公共 API 由五大功能模块组成。与 Qt 5 相比,每个 API 都经历了重大变更:
      • 设备发现
      • 低级音频
      • 播放与解码
      • 捕获与录制
      • 视频输出管道
    • 当前支持的后端:
      • Linux:GStreamer
      • Windows:WMF
      • macOS/iOS:AVFoundation
      • Android:MediaPlayer 和相机API
  • Qt NFC
    • 已移除对 Linux/NearD 的支持。
    • 新增对 iOS 的支持。
  • Qt Positioning
    • 许多属性已支持绑定。
    • 将 QGeoPolygon::path() 重命名为QGeoPolygon::perimeter 。
    • QGeoLocation 现在使用QGeoShape 代替QGeoRectangle 作为边界区域。
    • 多个定位类中的error() 信号已重命名为errorOccurred() 。
    • 已移除 QGeoPositionInfoSourceFactoryV2,QGeoPositionInfoSourceFactory 现支持为生成的对象设置自定义参数。
    • 对 NMEA 的支持已重新设计。serialnmea插件已更名为nmea,现支持从 TCP 套接字或原始文件读取输入流。nmeaSource 属性已被移除。
  • Qt Remote Objects
    • 本地连接后端现支持抽象命名空间(这是 Linux 特有的扩展功能),通过在 URL 中使用新的localabstract 模式实现。
    • .rep-files 现支持:
      • 类枚举。
      • QFlags.
      • 多行注释(C 风格)。
    • POD类型现支持枚举和flags ,且在.rep 文件中,它们可作为QMap 和QHash 属性的键。
  • Qt Sensors
    • 大多数面向 QML 的属性现在均可绑定。
    • Sensor::type 并且QSensor::type 属性现在被标记为常量。
    • 在QSensorBackend::sensorBusy() 中添加了参数,以便也能清除忙状态。
    • 删除了 qtimestamp 的 typedef。
    • 将传感器type 字符串重命名为sensorType 。
    • Windows:现在可以要求使用 Windows 10 API,从而扩展了支持的传感器数量。
    • 已移除 TI Sensor Tag 作为支持的平台。
    • 已移除 Linuxsysfs 后端。
    • 已移除对传感器手势的支持(欢迎在此处提供反馈:QTBUG-97066)。
    • 由于 Sensorfw 本身尚未移植到 Qt 6,因此已移除 Sensorfw 作为平台。
    • 仅支持 Sensorfw 后端的传感器类型(IRProximity、Lid 和 Tap)不再列为受支持类型。
    • 没有后端的传感器类型已被移除(Altimeter、Distance 和 Holster)。
  • Qt Serial Bus
  • Qt Serial Port
  • Qt WebChannel
    • QWebChannel 属性现已支持绑定。
    • QWebChannel 的属性更新间隔现在可以配置。默认更新间隔仍为50毫秒。
    • QWebChannel 现在支持对可绑定属性的更新。但是,如果主机属性没有 NOTIFY 信号,客户端不会提供通用的回调机制。
    • 来自不同线程中对象的信号现在能够被正确处理(QTBUG-51366)。
  • Qt WebEngine
  • Qt WebSockets
  • Qt WebView

Qt 6.2 的新功能

Qt Core 模块

  • 新增功能:
    • 新增了 `QByteArrayView::compare()` 方法。
    • 新增方法 QFlags::test(Any)Flag(s)。
    • 新增了QHashSeed 用于控制哈希(种子现在为size_t);该函数将取代qGlobalQHashSeed和qSetGlobalQHashSeed。
    • 新增了 PRIxQTDATATYPE 宏,以便在不进行类型转换或引发警告的情况下实现 printf() 风格的格式化。
  • 使许多属性可绑定。
  • 字形群现在可以处理表情符号了。
  • 现在,Windows 上的 UNC 路径和网络共享得到了统一处理。
  • 在容器的各种indexOf() 和lastIndexOf() 方法(主要是QString 、QByteArray 及其视图)中,对名为from 的起始偏移量参数的处理现在更加一致。
  • 与QString::number() 自 Qt 6.0 发布以来的行为一致,QByteArray::number() 针对有符号整数类型的重载现在会返回一个包含负号后跟数字绝对值的字符串,而不是在传入负整数和任何受支持的基数时,将所有基数(十进制除外)强制转换为无符号类型。
  • QCalendar 现在支持根据自定义后端的 ID 进行构造。
  • QChar、QPoint 和QPointF 现已成为基本类,而不仅仅是可重定位类。
  • QCoreApplication::exit() 现在与 quit() 一样,是一个槽(正如文档中长期所述);QEventLoop 和QThread 也是如此。
  • QDateTime 现在在 time_t 的整个范围内(只要平台提供此类信息)都会考虑时区,而不是人为地将范围限制在 1970 年至 2037 年之间。
  • 完善了 `QFlags` 对值类型的行为,现在其应用更加系统化。
  • 在针对 C++20 构建时,QList (因此也包括QVector )现在是contiguous_iterator ,满足contiguous_range 。
  • QLocalSocket::waitFor*() 方法现已支持 Windows 平台上的双工操作(此前在 Unix 平台上已支持)。
  • 为QLockFile 方法添加了 std::chrono 重载,避免了 UTC 与本地时间之间不必要的转换。
  • QString 现在可以基于 char8_t 构建(如果可用)。
  • QThreadPool 的线程优先级现已支持配置;如果线程池有名称,则线程将共享该名称。
  • 进行了大量错误修复、代码清理和文档改进。

Qt GUI 模块

  • 在QImage 中添加了 16 位和 32 位浮点数的浮点图像格式。
  • 将 RGB 图像转换为灰度图像或将 RGB 颜色绘制到灰度图像上时,现在会进行伽马校正,并产生输入色彩空间的亮度值。
  • 现在,富文本 span 标签支持 CSStext-decoration-color属性,可实现下划线、上划线和删除线效果。

Qt Quick 模块

Qt Quick Controls 模块

Qt Widgets 模块

Qt Network 模块

  • QSslSocket
    • 此前(在 Qt 6.1 中)被转换为类似插件类的 TLS 后端,现已从 QtNetwork 中移出,并作为真正的插件实现。
    • 现在,多个 TLS 后端可以在运行时共存,例如 OpenSSL 和 Schannel,或者 OpenSSL 和 SecureTransport。
  • QNetworkInformation
    • 引入了isBehindCaptivePortal ,这是一个新属性,可用于判断用户是否连接到了带有捕获门户的网络。

Qt Qml 模块

  • 核心语言
    • 新增了对可选链式调用的支持。
    • 添加了类型转换:这些转换主要有助于工具开发,但也可用于替换代码,例如将 `return (obj instanceof Item) ? obj.width : 42 ` 替换为 `(obj as Item)?.width ?? 42`。
    • 在 QML 文件中增加了对弃用注解的支持,允许使用@Deprecated 将类型和属性标记为弃用。
  • 模块系统
    • 在 qmldir 文件中添加了prefer 指令。该指令由 CMake 自动生成,可使 QML 模块从资源文件系统中加载。这使得预编译的 QML 文件得以使用。
    • 新增了QML_IMPORT_PATH 环境变量,作为QML2_IMPORT_PATH 的更佳替代方案。
  • 为 QML 模块添加了一个公共 CMake API:qt_add_qml_module() 。
    • 负责生成qmldir 和qmltypes 。
    • 如果插件仅注册类型,则可自动创建该插件。
    • 内置了对代码检查(linting)目标的支持。
  • QML 工具
    • qmllint
      • 新增了针对警告严重程度的精细设置;可以完全禁用警告、将其仅作为信息提示,或者使其导致非零退出代码。
      • 新增了一个设置文件(.qmllint.ini),用于按目录逐个配置警告级别。可通过qmllint --write-defaults 生成默认设置文件。
      • 现在可以通过注释在代码块中禁用警告;//qmllint enable/disable <warning-type1> <warning-type2...>
      • 大幅提升了文件代码检查的性能,特别是在检查包含大量导入语句的多文件时。
      • 新增对 JSON 输出的支持,以便在工具中使用。
    • qmlformat
      • qmlformat 现采用我们全新的qmldom库,通常应能生成更优质的输出结果。

Qt Quick 3D 模块

  • 新增了对实例化渲染的支持,这是一种通过不同变换绘制同一对象多个实例的优化方式。
  • 新增了 3D 粒子功能,这是一个用于为 3D 场景添加粒子特效的 API。其中包括模型混合粒子的技术预览。
  • 为3D场景中的2D元素(包括场景内和纹理中的)添加了Qt Quick 输入事件。
  • 新增了一个 API,用于从场景中的任意点进行基于光线的选择。
  • 新增了RuntimeLoader ,支持在运行时加载 glTF2 文件。
  • 实现了视差遮挡映射:可在不增加几何体开销的情况下使用高度图。
  • 在材质上实现了深度渲染模式:可对材质的深度渲染进行精细控制。

Qt Data Visualization 模块

  • 修复了背景渲染模式。
  • RenderDirectToBackground_NoClear 已被废弃,因为在 Qt 6 中,选择不清除窗口已不再是可选项。
  • 修复了大量小错误。

Qt Charts 模块

  • 在 QScatterSeries 和 QLegend 中增加了更多可供选择的标记形状。
  • 在 QXYSeries 和 QLegend 中添加了浅色标记功能。这是一种更轻量级的点渲染方式。
  • 通过调用 QXYSeries 和 QBarSet 的方法,增加了选择系列中点的能力。
  • 在 QXYSeries 中,新增了为选定点设置颜色或使用自定义浅色标记的功能。
  • 在 QBarSet 中,增加了为选中的条形设置颜色的功能。
  • 在 QXYSeries 中添加了显示最佳拟合线的功能。
  • 新增了自定义 QXYSeries 中单个数据点外观的功能。该功能允许设置每个数据点的可见性、标签可见性以及大小。
  • 在 QXYSeries 中添加了方法sizeBy(),该方法可根据传入的值调整系列中数据点的大小。
  • 在 QXYSeries 中添加了方法colorBy(),该方法可根据传入的值和渐变来调整系列中数据点的颜色。
  • 新增了一个轴类 QColorAxis,以支持 colorBy() 功能,显示颜色刻度。
  • 新增了禁用坐标轴中标签截断的功能。
  • 通过缓存最近使用的文本边界来提升性能。
  • 通过 `setInteractive()` 方法为 QLegend 添加了交互支持。启用后,双击即可将图例分离。分离后,图例可以被拖动和调整大小,并通过将其拖出边缘重新附着到图表的一侧。
  • 为 QLegend 添加了attachedToChartChanged() 信号。
  • 更新了图例示例。

Qt for Python

  • 在Qt for Python 文档中新增了示例、教程和视频。
  • 兼容 Python 3.10rc2。
  • 添加了QtDBus 、QtNetworkAuth 和QtBluetooth 模块。
  • 新增了 Shiboken 功能“不透明容器(Opaque Containers)”,以避免将 C++ 容器复制到 Python 中使用。
  • 现在,从源代码构建 PySide 时,可以使用qtpaths 代替qmake 。
  • 为QThreadPool 中的某些方法添加了对 std::function 的支持。
  • 新增了 QML 函数,并增加了对qmlRegisterSingletonInstance 的支持。

平台变更

技术预览平台

基于 ARM 的 Windows

  • 已将 Windows on ARM64 添加为技术预览平台。
  • 作为构建目标受支持;尚不支持主机。
  • 已知限制:
    • 目前尚不支持Qt WebEngine ;缺少对Chromium的官方支持。
    • 尚不支持 SSL;缺少对 OpenSSL 的官方支持。

桌面平台

Apple Silicon 上的 macOS

  • 已将其作为目标平台和主机平台均增加了官方支持。
  • Qt SDK 中的库已构建为通用二进制文件。
  • 已知限制:
    • 缺少 SSL 支持。
    • 缺少PostgreSQL和ODBC数据库插件(QTBUG-93204)。
    • 缺少 JIT 支持(QTBUG-93206)。

Linux 上的 Wayland 客户端

  • 如果合成器通过pointer-gestures-unstable-v1协议发送相关事件,触控板的捏合手势现在会生成缩放和旋转的QNativeGestureEvent事件。这使得Qt Quick PinchHandler 能够通过触控板的捏合手势进行操作。系统支持识别两指、三指或四指手势。通过三指或四指滑动,可以生成Qt::PanNativeGesture 类型的手势。 双指轻扫仍会像以前一样生成QWheelEvent事件。

移动平台

Android

  • 先前位于 QtAndroidExtras 中 QtAndroid 命名空间下的某些方法(例如 sdkVersion() 和 context())已移至QNativeInterface::QAndroidApplication 。
  • 在QCoreApplication 中实现了新的权限 API。
  • 其余的 QtAndroidExtras API 仍作为私有 API 保留在 qtbase 中,直到跨平台的替代方案(如 Intents、Services 等)就位为止。
  • 移除了过时的 Ministro 代码,因为 Android 现已不再支持它。
  • 简化了AndroidManifest.xml,使其仅包含与用户相关的标签,从而提高可维护性并减少冗余。
  • QCDebug() 及其相关函数现在将类别用作 Androidlogcat 中的标签。
  • 将 Android Gradle 插件更新至 4.1.3 版。
  • 修复了一个与样式相关的非 SDK API 错误(QTBUG-71590),不过 Android 9 及以上版本中控件的 Android 样式仍受此影响(QTBUG-96149)。
  • 根据 Google Play 商店的要求,默认 targetSdkVersion 已设置为 30。
  • 所使用的构建工具版本和平台版本已升级至 30。
  • QDesktopServices 现在已启用自定义处理程序,允许您使用 Android App Links 等功能。
  • 添加了相关信息,允许应用程序在不创建 QtActivity 的自定义扩展的情况下确定 intent 的来源。
  • 修复了 QML 模块的导入问题,并增加了支持多个 QML 根路径的功能。
  • 修复了 Android 上的 Vulkan 构建问题。

iOS

  • 改进了对 CMake 的支持。
  • 已知问题:
    • 缺少默认启动屏幕故事板。
    • 无法安装自定义库(QTBUG-95381)。

嵌入式平台

在Qt for Device Creation许可下提供。

Boot to Qt

  • Boot to Qt 堆栈已更新为使用 Yocto 3.3 (Hardknott)。
  • 添加了 Intel NUC10(64 位 i5 x86)作为参考目标。
  • 已将 NVidia Jetson Tegra X2 添加为目标平台。

QNX

  • 添加了 QNX 7.1 版本和 Ubuntu 20.04 作为主机。
  • 添加了NXP iMX8QM 作为参考目标。

INTEGRITY

  • 已将 INTEGRITY 19.0.13 版本和 Ubuntu 20.04 添加为主机。
  • 添加了 Qualcomm Snapdragon 8155P 作为参考目标。

WebOS

已验证 Qt 6.2 可在以 Ubuntu 20.04 作为开发主机、Raspberry Pi 4 作为硬件的环境下,与 LG webOS OSE 2.13.1 正常运行。

API 变更列表

这些页面概述了 Qt 6.2 中的 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.