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 模块在 Qt 6 中的变化,可以在 Changes to Qt Modules in Qt 6 中找到更详细的模块变化列表。

Qt Bluetooth

  • 移除了对 BlueZ 4 的支持。
  • 移除了 Win32 后端。因此,不再支持使用 MinGW 的 Qt Bluetooth。
  • 删除了 QML API。
  • 删除了 QBluetoothTransferManager 及相关类。
  • 从 QBluetoothLocalDevice 中移除了关于配对代理的功能。

Qt Multimedia

  • Qt Multimedia 公共 API 包含五个大型功能块。与 Qt 5 相比,每个 API 都进行了重大更改:
  • 设备发现
  • 低级音频
  • 播放和解码
  • 捕获和录音
  • 视频输出管道
  • 目前支持的后端:
  • Linux: GStreamer
  • Windows: WMF
  • macOS/iOS: AVFoundation
  • Android: MediaPlayer 和 Camera 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-specific 扩展),通过在 URL 中使用新的 localabstract 架构实现。
  • .rep 文件现在支持:
  • 类枚举。
  • QFlags。
  • 多行注释(C-style)。
  • .rep 文件中的 Enums 和 flags 现在支持 POD 类型和作为 QMap 和 QHash 属性函据的键。

Qt Sensors

  • 大部分面向 QML 的属性现在都是可绑定的。
  • Sensor::type 和 QSensor::type 属性现在标记为常量。
  • 向 QSensorBackend::sensorBusy() 添加参数,以便清除繁忙状态。
  • 删除了 qtimestamp 的 typedef。
  • 将传感器类型字符串重命名为 sensorType。
  • Windows: 现在可以要求 Windows 10 API ,从而扩展受支持的传感器数量。
  • TI Sensor Tag 不再作为支持的平台。
  • 删除了 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 的属性更新间隔。50ms 更新间隔保持为默认值。
  • QWebChannel 现在支持 BINDABLE 属性的属性更新。但是,如果宿主属性不具有 NOTIFY 信号,客户端不提供通用回调机制。
  • 来自不同线程中的对象信号现在已正确处理(QTBUG-51366)。

Qt WebEngine

  • Qt Quick 的子模块已从 QtWebEngine 重命名为 QtWebEngineQuick。
  • 包括 QWebEnginePage 在内的多个类从 QtWebEngineWidgets 移动到 QtWebEngineCore。
  • 一些之前只能通过派生自 QWebEnginePage 访问的功能现在可以使用同步信号进行访问。
  • 向 QWebEngineProfile 添加 Favicon API,以便查找特定 URL 的图标。
  • 新的 QWebEngineLoadingInfo 类提供了关于加载成功或失败的更多细节。

Qt WebSockets

Qt WebView

Qt 6.2 功能更新

Qt Core 模块新增功能:

  1. 增加了QByteArrayView::compare()。
  2. 增加了QFlags::test(Any)Flag(s)方法。
  3. 增加了QHashSeed以控制哈希(种子现在是size_t);这将替代qGlobalQHashSeed和qSetGlobalQHashSeed。
  4. 增加了PRIxQTDATATYPE宏,以方便在没有转换或警告的情况下进行printf()- 类型的格式化。
  5. 许多属性可绑定。
  6. 图元簇现在可以处理表情符号。
  7. 在Windows上,UNC路径和网络共享现在的操作更一致。
  8. 容器(主要是QString、QByteArray及其视图)中的各种indexOf()和lastIndexOf()方法中,从“from”参数的start-offset处理现在更连贯。
  9. 与Qt 6.0版的QString::number()一样,对于有符号整数类型的QByteArray::number()重载在传递负整数和任何支持的基数时,返回带有负号和数字绝对值的文本,而不是将其强制转换为无符号类型(除10进制之外)。
  10. QCalendar现在支持从自定义后端的ID进行构造。
  11. QChar、QPoint和QPointF现在是基本类型,而不仅仅是可重新定位的。
  12. QCoreApplication::exit()现在,如quit()一样,成为一个槽(正如文档长期所声称的那样);QEventLoop和QThread也是如此。
  13. QDateTime现在在整个time_t范围内考虑时区(只要平台提供此类信息),而不是将范围人为限制在1970年至2037年之间。
  14. 实现了QFlags的价值类型行为,现在系统更加广泛地使用。
  15. 在构建C++20时,QList(因此也包括QVector)现在是连续迭代器,满足连续范围。
  16. QLocalSocket::waitFor*()方法现已支持在 Windows 上进行双工操作(Unix 上为原始方法)。
  17. 在QLockFile方法中添加了std::chrono重载,避免了 UTC 和本地时间之间不必要的转换。
  18. QStringList可以从char8_t(如有)构建。
  19. QThreadPool的线程优先级可配置;如果有名称,线程将共享线程池的名称。
  20. 大量的Bug修复、清理和文档改进。

Qt GUI 模块

  1. 向QImage添加了16位和32位浮点数表示的浮点图像格式。
  2. 将RGB图像转换为灰度图像,或在灰度图像上绘制RGB颜色现在进行γ校正,并生成输入色彩空间的亮度值。
  3. 现在在具有下划线、上划线和删除线的富文本跨度中支持CSS文本装饰颜色属性。

Qt Quick 模块

  1. 通过为 TableView 分配 ItemSelectionModel,支持选择 cell。

Qt Quick Controls 模块

  1. 增加了新控件 SelectionRectangle,可用于使用样式化选择矩形在 TableView 中选择单元格。

Qt Widgets 模块

  1. 增加了PM_LineEditIconSize,一个新的QStyle::PixelMetric枚举值,允许样式为QLineEdit中的图标定义默认大小。
  2. 新的QGraphicsSceneEvent::timestamp方法返回原始事件的时间戳(如适用)。
  3. QGraphicsSceneWheelEvent::phase、QGraphicsSceneWheelEvent::pixelDelta和QGraphicsSceneWheelEvent::isInverted分别返回原始QWheelEvent的相应属性。、

Qt Network 模块

  1. QSslSocket :在Qt 6.1中转换为类似插件的类的TLS后端已被移出QtNetwork并作为真正的插件实现。现在,多个TLS后端可以在运行时共存,例如OpenSSL和Schannel,或者OpenSSL和SecureTransport。
  2. QNetworkInformation :引入isBehindCaptivePortal,一个新属性,可以用来判断用户是否连接到带有captive portal的网络。

Qt QML模块

  1. 核心语言
  • 添加了对可选链式调用的支持。
  • 添加了as转换:这些主要有助于工具,但也可用于替换类似于 return (obj instanceof Item) ? obj.width : 42 的代码(使用 (obj as Item)?.width ?? 42 替换)。
  • 为 QML 模块添加了公共的 CMake API:qt_add_qml_module()。
  • 负责生成 qmldir 和 qmltypes。
  • 如果插件仅注册类型,可以自动创建插件。
  • 内置支持 linting 目标。
  1. QML 工具
  • qmllint
  • 为警告严重程度添加了细粒度设置;警告可以完全禁用,仅作为信息,或导致非零退出代码。
  • 添加了一个设置文件(.qmllint.ini),用于在目录级别配置警告级别。可以使用 qmllint --write-defaults 生成默认设置文件。
  • 现在可以通过注释在块中禁用警告;//qmllint enable/disable <warning-type2…>。
  • 在对文件进行 linting 时,性能大大提高,尤其是在对包含大量导入的多个文件进行 linting 时。
  • 添加了用于工具中的 JSON 输出支持。
  • qmlformat
  • qmlformat 现在使用我们新的 qmldom 库,应该会产生更好的输出。
    Qt Quick 3D模块
  • 添加了实例渲染支持,这是一种使用不同变换绘制相同对象多个实例的优化方式。
  • 添加了3D粒子,一种用于在3D场景中添加粒子效果的API。这包括模型混合粒子的技术预览。
  • 为3D场景中的2D项目添加了Qt Quick输入事件,包括在场景中和纹理中。
  • 添加了从场景中任意点进行基于光线的拾取的API。
  • 添加了RuntimeLoader,使得在运行时可以加载glTF2文件。
  • 实现了视差遮挡映射:使得可以在不增加几何成本的情况下使用高度图。
  • 对材质实现了深度绘制模式:使材料的深度渲染具有更精细的控制。

Qt Data Visualization模块

  • 修复了背景渲染模式。
  • RenderDirectToBackground_NoClear 被废弃,因为在Qt 6中不再允许选择不清除窗口。
  • 许多小bug修复。

Qt Charts模块

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

Qt for Python

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

平台更改

技术预览平台

Windows on ARM

  • ARM64 版 Windows 加入作为技术预览平台。
  • 作为构建目标所支持;还没有主机支持。
  • 已知限制:
  • 还没有 Qt WebEngine 支持;缺少官方 Chromium 支持。
  • 还没有 SSL 支持;缺少官方 OpenSSL 支持。

桌面平台

macOS on Apple Silicon

  • 作为目标和主机平台加入正式支持。
  • Qt SDK 中的库作为通用二进制文件构建。
  • 已知限制:
  • 缺少 SSL 支持。
  • 缺少 postgresql 和 odbc 数据库插件 (QTBUG-93204)。
  • 缺少 JIT 支持 (QTBUG-93206)。

Wayland 客户端 on Linux

  • 触摸板捏合手势现在通过 pointer-gestures-unstable-v1 协议从组合器发送时,将生成 Zoom 和 Rotate QNativeGestureEvents。这允许 Qt Quick PinchHandler 通过触摸板捏合手势操作。支持两、三或四指手势。类型为 Qt::PanNativeGesture 的手势可以通过三指或四指滑动生成。两指移动仍然会像以前一样生成 QWheelEvents。

移动平台

Android

  • QtAndroidExtras 中 QtAndroid 命名空间下的一些方法(例如 sdkVersion() 和 context())已移至 QNativeInterface::QAndroidApplication。
  • 在 QCoreApplication 中实现了新的权限 API。
  • 将其余 QtAndroidExtras API 保留为 qtbase 中的私有 API,直到有跨平台替代方案(适用于 Intents、Services 等)。
  • 移除了被 Android 不再支持的过时的 Ministro 代码。
  • 简化了 AndroidManifest.xml,只包含与用户相关的标签,以帮助维护和减少杂乱。
  • QCDebug() 及其相关函数现在在 Android logcat 中使用分类作为标签。
  • 更新了 Android Gradle 插件至 4.1.3。
  • 修复了与样式有关的非 SDK API 错误 (QTBUG-71590),尽管 Android 9+ 上的小部件的 Android Style 仍受影响 (QTBUG-96149)。
  • 默认的 targetSdkVersion 设置为 30,以符合 Google Play Store 的要求。
  • 使用的构建工具版本和平台版本升级至 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)。
  • 将 Intel NUC10 (64bit 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 经验证可与 LG webOS OSE 2.13.1 一起使用,使用 Ubuntu 20.04 作为开发主机,硬件为树莓派 4。
目录
相关文章
|
7月前
|
存储 数据安全/隐私保护 C++
Qt 中文文档 Qt5.15 PDF Class (从官网Qt 5.15 翻译)
Qt 中文文档 Qt5.15 PDF Class (从官网Qt 5.15 翻译)
505 0
|
3月前
|
编解码 开发工具 UED
QT Widgets模块源码解析与实践
【9月更文挑战第20天】Qt Widgets 模块是 Qt 开发中至关重要的部分,提供了丰富的 GUI 组件,如按钮、文本框等,并支持布局管理、事件处理和窗口管理。这些组件基于信号与槽机制,实现灵活交互。通过对源码的解析及实践应用,可深入了解其类结构、布局管理和事件处理机制,掌握创建复杂 UI 界面的方法,提升开发效率和用户体验。
188 12
|
7月前
|
SQL XML API
Qt C++ 模块 描述列表【从Qt 官网 6.5 版本翻译】
Qt C++ 模块 描述列表【从Qt 官网 6.5 版本翻译】
49 0
|
7月前
|
数据可视化 安全 API
Qt 6.1 中的模块变更(从官网文档翻译)
Qt 6.1 中的模块变更(从官网文档翻译)
57 0
|
7月前
|
前端开发 JavaScript 安全
深入探索 Qt6 web模块 WebEngineCore:从基础原理到高级应用与技巧
深入探索 Qt6 web模块 WebEngineCore:从基础原理到高级应用与技巧
788 0
|
存储 SQL 分布式数据库
Drill官网文档翻译六:存储插件的注册
我们可以通过存储插件连接到本地文件系统,Hive,HBase,或是其他的数据源。在Drill的web界面的存储插件配置tab,你可以查看修改这些插件的配置。如果不支持HTTPS(默认就没有),你可以访问HTTP://{IP}:8047/storage 来查看和配置存储插件。可以用IP,也可以用ho.
3299 0
|
SQL 存储 Apache
Drill官网文档翻译一 基本架构
(翻译自apache drill 官网) 架构总览 Apache drill是在大规模数据集场景下,可以低延迟地进行结构和半结构化/嵌套数据结构查询的一个分布式查询引擎。受到谷歌公司的Dremel的启发,Drill被设计出来以支持几千个节点和PB级别的数据规模下,支持交互响应级别的商务智
9285 0
|
存储
Drill官网文档翻译五:连接到数据源
存储插件是Drill中,连接到数据源的模块。一个存储插件通常会优化Drill查询的执行,提供数据的定位,命名空间下的配置和读数据要用到的格式。Drill已经内置了一些存储插件,你只需要根据你的环境配置一下就可以使用了。借助存储插件,你可以连接到各种数据源,像数据库,本地或是分布式的文件,或是Hiv.
3562 0
|
存储
Drill官网文档翻译四 Drill的性能
(翻译自apache drill 官网。) Drill是从地基开始就奔向高性能和大数据集去设计的,下面列出来的是Drill能够做到高性能的核心要点。 分布式的引擎 Drill提供了一个强大的分布式引擎来处理查询。用户可以从集群的任何一个节点是提交查询。你可以添加新的节点到集群中,以为了支持更多
4545 0
|
SQL 存储 HIVE
Drill官网文档翻译三:Drill的核心模块
(翻译自Drill官网) 核心模块 下图描述了一个drillbit里的各个组件 下面列出drillbit里的关键组件: RPC endpoint Drill开发了一种基于Probobuf的损耗非常低的RPC通信协议来跟客户端打交道。另外,客户端程序也可以使用C++或是JAVA api层来跟
3374 0