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 模块的变更》(Changes to Qt Modules in Qt 6)。
- Qt Bluetooth
- 删除了 BlueZ 4 支持。
- 删除了 Win32 后端。因此,不再支持Qt Bluetooth 使用 Mingw-w64。
- 删除了 QML API。
- 删除了 QBluetoothTransferManager 和相关类。
- 从QBluetoothLocalDevice 中删除了与配对代理相关的功能。
- Qt Multimedia
- Qt Multimedia 公共 API 由五大功能块组成。与 Qt 5 相比,每个 API 都发生了重大变化:
- 设备发现
- 低级音频
- 播放和解码
- 捕获和录制
- 视频输出管道
- 目前支持的后端
- LinuxGStreamer
- WindowsWMF
- macOS/iOSAVFoundation
- 安卓:MediaPlayer 和相机应用程序接口
- Qt Multimedia 公共 API 由五大功能块组成。与 Qt 5 相比,每个 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
- Qt Sensors
- 大多数面向 QML 的属性现在都可绑定。
- Sensor::type 和 属性现在标记为常量。QSensor::type
- 为QSensorBackend::sensorBusy() 添加了参数,以便也能清除繁忙状态。
- 删除了 qtimestamp 的类型定义。
- 将传感器
type
字符串重命名为sensorType
。 - Windows:我们现在可以要求使用 Windows 10 API,从而扩展了支持的传感器数量。
- 删除了作为支持平台的 TI 传感器标签。
- 删除了 Linux
sysfs
后端。 - 删除了传感器手势支持(欢迎在此输入:QTBUG-97066)。
- 由于 Sensorfw 本身尚未移植到 Qt 6,因此 Sensorfw 作为平台已被移除。
- 仅有 Sensorfw 后端的传感器类型(IRProximity、Lid 和 Tap)不再列为支持。
- 没有任何后台的传感器类型已被移除(高度计、距离和皮套)。
- Qt Serial Bus
- QCanBusFactory 已删除,QCanBusFactoryV2 更名为 。QCanBusFactory
- QModbusRtuSerialSlave 和 QModbusRtuSerialMaster 更名为QModbusRtuSerialServer 和QModbusRtuSerialClient 。
- Qt Serial Port
- Qt WebChannel
- QWebChannel 属性可绑定。
- 现在可以配置QWebChannel 的属性更新间隔。默认更新间隔为 50 毫秒。
- QWebChannel 现在支持绑定属性的属性更新。不过,如果宿主属性没有 NOTIFY 信号,客户端不会提供通用回调机制。
- 现在能正确处理来自不同线程的对象的信号(QTBUG-51366)。
- Qt WebEngine
- Qt Quick 的子模块已从 QtWebEngine 更名为QtWebEngineQuick 。
- 一些类从QtWebEngineWidgets 移到了QtWebEngineCore ,包括QWebEnginePage 。
- 以前只能通过派生自QWebEnginePage 访问的某些功能,现在可以使用同步信号访问。
- 在QWebEngineProfile 中添加了 Favicon API,用于查找特定 URL 的图标。
- 新的QWebEngineLoadingInfo 类提供了有关加载成功或失败的更多详细信息。
- 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 路径和网络共享。
- 在容器(主要是QString 、QByteArray 及其视图)的各种
indexOf()
和lastIndexOf()
方法中对起始偏移参数(称为from
)的处理现在更加一致。 - 与自 Qt 6.0 发布以来的QString::number() 一样,QByteArray::number() 对有符号积分类型的重载现在在传递负整数和任何支持的基数时,对于除 10 以外的所有基数,都会返回一个带减号的文本,后面跟着数字的绝对值,而不是强制为无符号类型。
- 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 色彩时,现在会进行伽玛校正,并生成输入色彩空间的亮度值。
- 在带有下划线、上划线和删除线的富文本跨度中,现在支持 CSS文本装饰颜色属性。
Qt Quick 模块
- 通过为TableView 指定ItemSelectionModel ,新增了对选择单元格的支持。
Qt Quick Controls 模块
- 添加了一个新控件;SelectionRectangle 。该控件可通过使用样式选择矩形在TableView 中选择单元格。
Qt Widgets 模块
- 添加了 PM_LineEditIconSize,这是一个新的QStyle::PixelMetric 枚举值,允许样式为QLineEdit 中的图标定义默认大小。
- 新的QGraphicsSceneEvent::timestamp 方法返回原始事件的时间戳(如果适用)。
- QGraphicsSceneWheelEvent::phase QGraphicsSceneWheelEvent::pixelDelta 和 返回原始 的相应属性。QGraphicsSceneWheelEvent::isInverted QWheelEvent
Qt Network 模块
- QSslSocket
- 以前(在 Qt 6.1 中)被转换为插件类的 TLS 后端被移出 QtNetwork 并作为真正的插件实现。
- 现在,多个 TLS 后端可以在运行时并存,例如 OpenSSL 和 Schannel,或 OpenSSL 和 SecureTransport。
- QNetworkInformation
- 引入了isBehindCaptivePortal ,这是一个新属性,可用于确定用户是否已连接到具有捕获门户的网络。
Qt QML 模块
- 核心语言
- 添加了对可选链的支持。
- 添加了作为投递的功能:这些功能主要用于帮助工具,但也可用于用
(obj as Item)?.width ?? 42
替换return (obj instanceof Item) ? obj.width : 42
等代码。
- 为 QML 模块添加了公共 CMake API:
qt_add_qml_module()
。- 负责生成
qmldir
和qmltypes
。 - 如果插件只注册类型,可自动创建插件。
- 内置了对 linting target 的支持。
- 负责生成
- QML 工具
qmllint
- 新增了对警告严重程度的细粒度设置;可完全禁用警告、使其仅提供信息,或使其导致非零退出代码。
- 新增了一个设置文件(.qmllint.ini),用于按目录配置警告级别。可使用
qmllint --write-defaults
生成默认设置文件。 - 现在可通过注释禁用块中的警告;
//qmllint enable/disable <warning-type1> <warning-type2...>
- 极大地提高了检查文件时的性能,尤其是在检查包含大量导入的多个文件时。
- 新增了对 JSON 输出的支持,以便在工具中使用。
qmlformat
qmlformat
现在可使用我们的新qmldom库,输出效果通常会更好。
Qt Quick 3D 模块
- 添加了对实例渲染的支持,这是一种以不同变换绘制同一对象的多个实例的优化方法。
- 添加了 3D 粒子,这是一种为 3D 场景添加粒子效果的 API。其中包括模型混合粒子的技术预览。
- 为三维场景和纹理中的二维项目添加了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 特性:不透明容器,以避免将 C++ 容器复制到 Python 中使用。
- 从源代码构建 PySide 时,现在可以使用
qtpaths
代替qmake
。 - 为QThreadPool 的某些方法添加了对 std::function 的支持。
- 添加了新的 QML 函数以及对qmlRegisterSingletonInstance 的支持。
平台变更
技术预览版平台
ARM 上的 Windows
- 已将 ARM64 上的 Windows 添加为技术预览平台。
- 作为构建目标提供支持;尚未提供主机支持。
- 已知限制:
- 尚不支持 Qt XMLWebEngine ;缺少对 Chromium 的官方支持。
- 尚未支持 SSL;缺少 OpenSSL 官方支持。
桌面平台
苹果硅上的 macOS
- 已添加目标平台和主机平台的官方支持。
- Qt SDK 中的库以通用二进制文件的形式构建。
- 已知限制:
- 缺少 SSL 支持。
- 缺少postgresql和odbc数据库插件(QTBUG-93204)。
- 缺少 JIT 支持(QTBUG-93206)。
Linux 上的 Wayland 客户端
- 如果合成器通过pointer-gestures-unstable-v1协议发送缩放和旋转手势,触摸板捏合手势现在会生成QNativeGestureEvent。这样,Qt Quick PinchHandler 就能通过触摸板捏合手势进行操作。可识别双指、三指或四指手势。三指或四指轻扫可产生Qt::PanNativeGesture 类型的手势。双指滑动仍可像以前一样生成QWheelEvents。
移动平台
安卓
- 之前 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 bug(QTBUG-71590),但 Android 9+ 上的小部件的 Android 样式仍受影响(QTBUG-96149)。
- 根据 Google Play 商店的要求,默认 targetSdkVersion 设置为 30。
- 使用的构建工具版本和平台版本也提高到 30。
- QDesktopServices 自定义处理程序现已启用,例如,它允许你使用 Android 应用程序链接。
- 添加了信息,允许应用程序确定意图的来源,而无需创建 QtActivity 的扩展。
- 修正了 QML 模块的导入,并增加了多个 QML 根路径的可能性。
- 修复了在 Android 上的 Vulkan 构建。
iOS
- 改进了 CMake 支持。
- 已知问题:
- 缺失默认启动屏幕故事板。
- 自定义库安装失败(QTBUG-95381)。
嵌入式平台
以Qt for Device Creation许可证提供。
Boot to Qt
- Boot to Qt 堆栈已更新为使用 Yocto 3.3 (Hardknott)。
- 已添加英特尔 NUC10(64 位 i5 x86)作为参考目标。
- 将 NVidia Jetson Tegra X2 添加为目标。
QNX
- 已添加 QNX 7.1 版和 Ubuntu 20.04 作为主机。
- 已添加NXP iMX8QM 作为参考目标。
完整性
- 已添加 19.0.13 版 INTEGRITY 和 Ubuntu 20.04 作为主机。
- 已添加 Qualcomm Snapdragon 8155P 作为参考目标。
网络操作系统
已验证 Qt 6.2 可在使用 Ubuntu 20.04 作为开发主机和 Raspberry Pi4 硬件的 LG webOS OSE 2.13.1 上运行。
应用程序接口变更列表
这些页面概述了 Qt 6.2 中的 API 变化:
© 2025 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.