Qt 6.5 新功能

Qt 6.5 中新增和恢复的模块

Qt 6.5 添加以下模块和工具

技术预览中新增和恢复的模块

注意:无法保证 API 和 ABI 的稳定性。

  • Qt Location地图 将 2D 地图渲染到 Qt Quick 应用程序中。 MapView 包含 Qt Quick 输入处理器 以实现典型的交互功能(缩放、平移、倾斜)。
  • Qt GRPC 支持使用基于从 protobuf .proto-规范生成的服务描述符的类与 gRPC 服务进行通信。
  • Qt Protobuf 支持从 protobuf .proto-规范生成、序列化和反序列化基于 Qt 的类。

Qt 6.5 中的新增功能

Qt 核心模块

  • QTimeZone 现在可以打包一个 Qt::TimeSpec,以及在相关的情况下,在一个轻量级的时间表示中包含一个偏移量,该表示统一了 QDateTimeQDate 的各种 API,这些 API 接收了一个 QTimeZone 或一个 Qt::TimeSpec 和偏移量。
  • 引入了 应用程序权限 API,允许应用程序在用户同意之前检查或请求需要用户同意的功能的权限。
  • 在通用跟踪格式(CTF)中引入了新的跨平台跟踪后端。
  • QBindable 现在可以从任何具有 NOTIFY 信号的性质构建。这使得您可以将现有的、不可绑定的属性与 可绑定属性 集成。
  • 现在推荐使用 OUTPUT_SCRIPT 参数的 CMake 函数 qt_generate_deploy_app_script。传递旧 FILENAME_VARIABLE 已弃用。

Qt GUI 模块

  • 重新引入了类QWindowsMimeConverterQUtiMimeConverter,用于在Windows、macOS和iOS平台的特定格式中处理拖放和剪贴板数据。
  • QVulkanInstance现在默认启用Vulkan可移植物理设备。这对于在苹果平台上与较新版本的MoltenVK版本协同操作是必需的。增加了一个NoPortabilityDrivers标志,允许您选择不这样做。
  • 现在Vulkan渲染基础设施使用VK_EXT_debug_utils而不是已弃用的VK_EXT_debug_report和VK_EXT_debug_marker。
  • QTextLayout::glyphRuns()现在可以在请求时返回与每个符号对应的字符串索引。通过新的函数QGlyphRun::stringIndexes提供。
  • 复选框列表项现在可以以HTML和Markdown方式读取和写入,包括转换。
  • 添加了QGuiApplication::setBadgeNumber()函数,以便向用户提供有关未读消息数量的反馈等。徽章将叠加在macOS中的应用程序图标上、iOS的首页图标上或在Windows的任务栏上。

Qt Quick模块

Qt Labs 动画模块

Qt Quick 控件模块

Qt 测试模块

Qt Widgets 模块

Qt 定位模块

Qt 串行总线模块

所有新类均为试验性,可能随时更改。

Qt 网络模块

  • 引入了QHttp1Configuration。该类可用于配置在HTTP 1中每个主机使用的最大连接数(默认:6)。
  • QNetworkRequest在Qt for WebAssembly中获得了UseCredentialsAttribute属性,使得底层的XMLHttpRequest能够使用withCredentials。

Qt QML模块

  • QQmlApplicationEngineQQmlComponent添加了API,用于通过它们的模块URI和类型名加载/创建QML元素。与基于URL的函数相比,这还可以与C++类型和内联组件一起使用。
  • QQmlListProperty属性现在更像数组,增加了对map()、reduce()和forEach()等方法的支持。同样适用于其他序列类型,如QList<int>及其类似类型。
  • 扩展了qmltc,以支持更多的qml构造函数,特别是翻译绑定、内联组件、单例以及对C++定义的信号的手动处理程序。
  • QML脚本编译器可以处理更多的结构。特别是:
    • console.log()及其相关项
    • letconst
    • qsTr()及其相关项
    • 字符串的arg()
    • 所有剩余的位和移位运算符
    • 指数运算符
  • 使用新的环境变量QML_DISK_CACHE可以以更细致的方式控制QML磁盘缓存
  • 添加了新的公共CMake API。
    • 引入了用于设置更好的默认资源前缀的Qt CMake策略。如果将QTP0001策略设置为NEW,QML引擎将始终能够在资源文件系统中找到您的QML模块。
  • qt_generate_deploy_qml_app_script CMake函数现在首选接受一个名为OUTPUT_SCRIPT的参数。传递旧 的FILENAME_VARIABLE已被弃用。

Qt Quick 3D模块

  • 为模型添加了自动细节级别(LOD)支持。这允许在资产导入时生成简化版本的网格,然后在渲染时自动选择合适的级别。
  • 添加了对显式细节级别(LOD)的支持,用于根据摄像机距离控制模型的透明度。
  • 添加了ExtendedSceneEnvironment,内置景深、色调分级、发光、晕影、镜头光晕等效果。这些效果一起执行,比单个独立后处理效果效率更高,每个效果可能需要一到多个渲染通道。
  • 增强了DebugView,增加了渲染统计信息、活动网格和纹理资产列表、实时渲染通道信息,以及用于交互式切换设置的控制,如线框模式和从DebugSettings的材质覆盖。
  • 添加了DebugSettings,通过SceneEnvironment可用,允许以编程方式控制设置,如线框模式和对基于物理材质的材质的覆盖。
  • 添加了InfiniteGrid,在水平平面实现无限网格,边缘渐变。
  • 添加了通过SceneEnvironment提供的简单雾支持。当启用时,在渲染场景中的模型时应用深度或高度雾效果。
  • 在使用实例渲染时改进了拾取。
  • PrincipledMaterialSpecularGlossyMaterial添加了顶点颜色支持。
  • 反射探针:添加了对使用提供的立方体贴图纹理而不是渲染场景的支持。
  • 增强后处理效果,以便在运行时对着色器源文件URI的变化做出适当反应。
  • 添加了持久、基于磁盘的缓存运行时生成的材质着色器数据。预计将提高应用程序启动和视图更改时间。

Qt WebView模块

Qt Multimedia模块

  • ffmpeg媒体后端,6.4中作为技术预览,现在成为macOS、Windows、Android和Linux的标准后端,Yocto发行版除外。原生后端仍然可用,但支持有限。
  • 引入了新的视频输入类型QScreenCapture类。可以使用QScreenCapture将视频直接从QMediaCaptureSession传输到输出,例如QMediaRecorderQVideoWidget。屏幕捕获功能仅在ffmpeg媒体后端中可用。

平台更改

WebAssembly

  • 在Qt在线安装器中添加了具有多线程功能的二进制软件包。
  • 添加了对文件系统访问API的支持。如果浏览器支持,文件对话框调用(如QFileDialog::getOpenFileContent()和QFileDialog::saveFileContent)将使用此API。
  • 添加了对本地字体访问API的支持。Qt将使用支持此API的浏览器上的本地字体。
  • 将视频播放和摄像头支持的技术预览添加到Qt Multimedia。
  • 为WebAssembly SIMD添加了配置选项:-feature-wasm-simd128
  • 为WebAssembly异常添加了配置选项:-feature-wasm-exceptions
  • 发布了Qt Web Utils,其中包含实用函数和Qt在Web上使用的示例。
  • QTest for WebAssembly现在默认使用emrun。一个专用的WebAssembly脚本驱动自动测试的执行。

桌面平台

Windows

  • 可以将环境变量QT_WIN_DEBUG_CONSOLE设置为在控制窗口中查看从命令行启动的GUI应用程序的stdout/stderr消息。将其设置为newattach

macOS

Linux上的Wayland客户端

  • 现在支持fractional_scale_v1协议,该协议适用于建议客户端分数缩放因子的合成器。

移动平台

Android

  • 将Gradle更新到8.0,将Android Gradle Plugin (AGP)更新到7.4.1(需要11或更高版本的JDK)。
  • 将NDK更新到r25b(25.1.8937393)。
  • 支持版本列表现在包括Android 8.0(API 26)或更高版本。
  • 将最低平台构建SDK版本提升到33(QT_ANDROID_API_VERSION)。
  • 通过Qt文件/目录工具支持对内容方案URI的更多操作。
  • 针对Android scoped storage更新了QStandardPaths的修复和文档更新。
  • 从Qt而不是Android系统中打印Qt JNI异常。
  • 修复了对APK签名方案v2的支持。

iOS

嵌入式平台

启动到Qt

  • Boot to Qt堆栈已更新为使用yocto 4.1.2(langdale)。
  • 支持使用基于Docker的工具链的macOS主机。
  • 更新了目标硬件的支持水平,现在有多个支持级别适用于特定的硬件和OS组合。

API更改列表

这些页面包含Qt 6.5中API更改的概述

© 2024 The Qt Company Ltd. 本文档中的贡献文档的版权归各自所有者所有。本提供的文档受Free Software Foundation发布的GNU自由文档许可协议版本1.3的条款许可。Qt及标志是The Qt Company Ltd.在芬兰及/或其他国家的商标。所有其他商标均为其所有者的财产。