Qt 6.3 新特性

Qt 6.3 新增和恢复的模块

Qt 6.3 增加以下模块

Qt 6.3 重引入以下模块,这些模块在 Qt 6.2 中不存在。所有列出的模块都已移植到 Qt 6 和 CMake 构建系统。

有关每个模块更改的更详细信息,请参阅 Qt 6 中 Qt 模块的更改

Qt 6.3 新特性

Qt 核心模块

Qt GUI模块

Qt Quick 模块

  • 新增项目:TreeView
  • 所有指针处理器都具有可设置的非码

    属性。
  • HoverHandlerWheelHandler中新增了一个可通过阻塞属性来控制hover事件和轮事件是否传递到处理器元素及其后面的项目和处理器的事件。
  • TapHandler中新增了一个gesturePolicy值:DragWithinBounds;它类似于非码

    WithinBounds

    ,除了即使用户在持续点击的同时拖拽,timeHeld在拖拽过程中不会重置,且无论拖拽阈值,当用户持续足够长时间时,会发出longPressed信号。这对于在timeHeld的推动下直接实现诸如菜单(如指针处理器示例中的饼图菜单)之类的按下-拖拽-释放组件非常有用。

  • QQuickItem::clipRect()现在提供了在viewport(父FlickableWindow)中可见的区域,并且可以用于在自定义项目中对场景图节点顶点进行优化,这可能会导致updatePaintNode()调用更为频繁。请参阅关于新标志的文档:QQuickItem::ItemObservesViewportQQuickItem::ItemIsViewport
  • 为了节省内存和启动时间,现在TextTextEdit将避免为无法看到的部分文本生成场景图节点,因为这部分文本位于viewport(即FlickableWindow)以外。
  • 现在Text能够从HTML或Markdown中渲染水平线。
  • Text中,水平线、下划线/上划线/删除线可以通过HTML源中包含的CSS规则进行着色。
    import QtQuick
    
    Text {
        textFormat: Text.RichText
        wrapMode: Text.WordWrap
        width: 440
        font.pointSize: 12
        text: `<p><u style="color: green;">green with underline</u>
                  <span style="text-decoration: underline; text-decoration-color: green;">
                    green underline</span></p>
               <p><s style="background-color: lightgrey;">plain strikethrough</s>
                  <span style="text-decoration: line-through; text-decoration-color: orange;">
                    orange strikethrough</span></p>
               <p><span style="text-decoration: overline;">plain overline</span>
                  <span style="text-decoration: overline; text-decoration-color: red;">
                    red overline</span></p>`
    }
  • 新增QQuickItem::dumpItemTree()方法;可以从C++(类似于QObject::dumpObjectTree)或从QML调用,以展示项目及其所有子项的qDebug输出,以缩进形式展示树结构。
  • TapHandlertappedsingleTappeddoubleTapped信号现在有两个参数:事件QEventPoint实例和按钮被点击。如果您需要信号处理,您应该编写一个显式函数来接收这些参数。
    onTapped: function(point, button) { ... }
    onDoubleTapped: (point, button)=> ...
  • DragHandleractiveTranslation属性持有关于拖拽手势开始以来的移动量。persistentTranslation属性持有关于后续拖拽手势中发生的累积移动总和,可以重置为手势之间的任意值。

Qt Quick 控件模块

Qt Quick 对话框模块

  • 新增了FolderDialogMessageDialog。这些是支持该平台的原生对话框,和其他平台上的非原生Qt Quick对话框。

    非原生对话框支持所有非原生样式:基本、融合、想象、材料和通用。

Qt Widgets模块

  • QToolBar现在支持使用动态滚轮或触控板进行滚动。

增加了一些新的QStyle枚举值,允许样式自定义基于小部件的用户界面的一些外观和感觉方面。

Qt网络模块

  • QNetworkInformation学习传输介质。一个返回主网络接口传输介质的属性。
  • QNetworkInformation还学习了isMetered属性。一个返回网络是否是计费网络的属性。

Qt QML模块

  • 增加了技术预览中的QML类型编译器(qmltc),它将QML类型结构编译为C++。
  • 向qmllint增加了一些新的警告,现在使用编译器基础设施。
  • 仅头文件的qmlintegration模块允许标记类型以在QML模块中进行注册,而无需添加对qtdeclarative的依赖。然后可以通过新的CMake API qt_generate_foreign_qml_types()添加到QML模块中。
  • qmlcachegen现在将适合的函数和表达式编译为C++,以提高性能。
  • 添加了新的公共CMake API

Qt Quick 3D模块

  • 增加了ReflectionProbe,使得模型可以显示反射。
  • Particles3D:新增了ParticleCustomShape3D元素,它从自定义CBOR二进制文件中加载发射形状。
  • Particles3D:Sprite颗粒现在支持3D环境光。
  • Particles3D:新增了DynamicBurst元素,用于声明式动态发射以及在轨迹开始/结束时发射。
  • 增加了ResourceLoader组件,用于显式设置资源的生命周期(在技术预览中)
  • PrincipledMaterial:添加了对ClearCoat、Transmission和Refraction的支持。
  • glTF2:导入器现在支持以下附加扩展:KHR_materials_clearcoat、KHR_materials_ior、KHR_materials_transmission、KHR_materials_volume

Qt WebEngine模块

  • 现在使用 Python 3 而不是 Python 2 进行构建
  • 新增了替换 QML 触摸选择菜单的 API
  • 添加了新的公共CMake API

Qt 数据可视化模块

Qt 定位模块

  • 为 Android 和 iOS 平台新增了 DirectionAccuracy 属性。它表示提供方位角的准确性。

Qt 蓝牙模块

  • 扩展了 QBluetoothLocalDevice 的 Windows 实现。它可以正确报告适配器状态,并允许切换其状态。但是,对连接/断开设备的跟踪支持尚不存在。
  • 扩展了 QBluetoothDeviceInfo API,以公开在广播期间发布的低功耗蓝牙服务数据。

Qt Wayland 组合模块

  • 添加了一个创建自定义外壳扩展的 API。有关使用说明,请参阅 示例
  • 添加了一个支持所有在 Qt 中可用的窗口系统功能的 Qt Shell
  • 添加了对 presentation-time 协议的支持。
  • 在一个服务器中添加了对多个输入法协议的支持,以便支持来自不同来源的客户端。

平台更改

技术预览平台

WebAssembly

对 Qt for WebAssembly 进行了多项改进。有关详细信息,请参阅 Qt for WebAssembly 的平台文档。

  • 添加了对系统剪贴板中图像和 html 文本的复制/粘贴的支持。
  • 添加了对 SIMD 的支持。请注意,启用 SIMD 需要从中构建 Qt。
  • 添加了对在主线程中调用 QEventLoop::exec() 和 QThread::exec() 的支持。
  • 使用 Emscripten Asyncify 在主线程中调用 QEventLoop::exec() 和 QDialog::exec()。请注意,启用 asyncify 需要从中构建 Qt。
  • 拖放现在对启用 asyncify 的构建有效。
  • 使用 Emscriptens 模拟 POSIX TCP Sockets over WebSockets 在 WebSocket 上隧道传输 TCP 和 UDP 套接字。此支持仅限于主线程上的异步套接字。

ARM 上的 Windows

由于尚未解决 Qt 优化构建的问题,ARM64 上的 Windows 仍处于技术预览状态。

移动平台

Android

  • 内置购买功能演示和Qt 3D:行星QML示例在Android上进行了特定改进。
  • 已将Gradle更新到7.2.0,并将Android Gradle插件(AGP)更新到7.0.2(需要JDK 11或更高版本)。
  • 为CMake Android项目添加了缺失的_make_aab目标。
  • 为CMake添加了支持多个ABI的构建,请参阅QT_ANDROID_ABIS
  • QML模块现在被存放到用户构建文件夹下名为"android-qml"的共用目录下。这作为androiddeployqt工具的共用导入路径。
  • QML测试平台现在适用于Android构建。

iOS

  • 基于CMake的项目现在会产生默认的启动屏幕。

嵌入式平台

引导至Qt

  • 引导至Qt堆栈已更新到使用Yocto 3.4(honister)。
  • Qt PDF和Qt语言服务器已被包含在引导至Qt堆栈中。

其他

Wayland

  • 实现了支持DataDeviceV3协议。
  • 支持升级到版本7。
  • 如果服务器支持多个接口,添加了对选择输入方法协议的支持。这可以通过设置QT_WAYLAND_TEXT_INPUT_PROTOCOL为协议名称来实现。

API更改列表

这些页面包含了Qt 6.3的API更改概述

Qt 6所有版本中的新增内容

Qt 6.0中的新类和函数

Qt 6.0中的新API列表。

Qt 6.1中的新类和函数

Qt 6.1中的新API列表。

Qt 6.2中的新类和函数

Qt 6.2中的新API列表。

Qt 6.3中的新类和函数

Qt 6.3中的新API列表。

Qt 6.4中的新类和函数

Qt 6.4中的新API列表。

Qt 6.5中的新类和函数

Qt 6.5中的新API列表。

Qt 6.6中的新类和函数

Qt 6.6中的新API列表。

Qt 6.7中的新类和函数

Qt 6.7中的新API列表。

Qt 6.0中的新特性

列出了Qt 6.0的新特性。

Qt 6.1中的新特性

列出了Qt 6.1的新特性。

Qt 6.2中的新特性

列出了Qt 6.2的新特性。

Qt 6.3 新特性

Qt 6.3中的新特性

Qt 6.4中的新特性

列出了Qt 6.4的新特性。

Qt 6.5中的新特性

列出了Qt 6.5的新特性。

Qt 6.6中的新特性

列出了Qt 6.6的新特性。

Qt 6.7中的新特性

列出了Qt 6.7的新特性。

© 2024 Qt公司有限公司。此处包含的文档贡献属于其各自的版权拥有者。此处提供的文档根据免费软件基金会发布的GNU自由文档许可证版本1.3的条款进行许可。Qt及其相关标志是芬兰和/或其他国家的Qt公司有限公司的商标。所有其他商标属于其各自的所有者。