本页内容

Qt 6.5 的新功能

Qt 6.5 中的新增和恢复模块

Qt 6.5 新增了以下模块和工具:

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

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

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

Qt 6.5 的新功能

Qt Core 模块

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

Qt GUI 模块

  • 重新引入了类QWindowsMimeConverter 和QUtiMimeConverter ,用于在Windows、macOS和iOS上以特定于平台的格式处理拖放和剪贴板数据。
  • QVulkanInstance 现在默认启用 Vulkan Portability 物理设备。这是在 Apple 平台上使用较新版本 MoltenVK 的必要条件。新增了 NoPortabilityDrivers 标志,允许您选择禁用此功能。
  • Vulkan 渲染基础设施现已改用 VK_EXT_debug_utils,取代了已弃用的 VK_EXT_debug_report 和 VK_EXT_debug_marker。
  • QTextLayout::glyphRuns() 现可在请求时返回与每个字形对应的字符串索引。该功能可通过新函数QGlyphRun::stringIndexes() 实现。
  • 复选框列表项现在不仅支持 Markdown 格式,还支持 HTML 格式,包括格式转换。
  • 新增了QGuiApplication::setBadgeNumber() 函数,用于向用户提供未读消息数量等反馈信息。该徽章将叠加在 macOS 的 Dock 中的应用程序图标、iOS 的主屏幕图标或 Windows 的任务栏上。

Qt Quick 模块

Qt Labs 动画模块

Qt Quick Controls 模块

Qt Test 模块

  • 新增了QTest::currentTestResolved() 方法,若测试失败或被跳过,该方法将返回 true。这可以替代QTest::currentTestFailed(),作为辅助函数返回时用于判断测试条件的条件。
  • QTest::mouseRelease现在可以使用 () 和mouseClick() 来测试双击操作,通过指定一个符合实际情况的时间戳延迟,以便在需要时检查事件之间的中间状态。在其他情况下,mouseDClick() 仍然更为方便。

Qt Widgets 模块

Qt Positioning 模块

Qt Serial Bus 模块

所有新类均为实验性功能,可能会发生变更。

Qt Network 模块

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

Qt Qml 模块

  • 在 `QQmlApplicationEngine ` 和 `QQmlComponent ` 中添加了 API,可通过模块 URI 和类型名称加载/创建 QML 元素。与基于 URL 的函数不同,此方法也适用于 C++ 类型和内联组件。
  • QQmlListProperty 属性现在行为更接近数组,支持 map()、reduce() 和 forEach() 等方法。其他序列类型(如QList<int> 及其类似类型)也同样如此。
  • 扩展了qmltc以支持更多的 QML 结构,特别是翻译绑定、内联组件、单例以及针对 C++ 定义信号的信号处理程序。
  • 引入了pragma FunctionSignatureBehavior ,用于控制 JavaScript 函数上类型注释的强制执行。此前,类型注释仅作为提示;该pragma使其具有强制性,从而提升类型安全性。
  • QML 脚本编译器现可处理更多语法结构。特别是:
    • console.log() 及其相关函数
    • let 以及const
    • qsTr() 及其相关函数
    • 用于字符串的 arg()
    • 所有其余的位运算和移位运算符
    • 幂运算符
  • 通过新的环境变量QML_DISK_CACHE ,可以更精细地控制QML 磁盘缓存。
  • 新增了公共 CMake API:
    • 引入了一项Qt CMake 策略,用于为资源前缀设置更合理的默认值。如果将QTP0001策略设置为NEW ,QML 引擎将始终能够在资源文件系统中找到您的 QML 模块。
  • CMake 函数qt_generate_deploy_qml_app_script现在建议使用名为 OUTPUT_SCRIPT 的参数。传递旧的 FILENAME_VARIABLE 已被废弃。
  • 引入了pragma NativeMethodBehavior: AcceptThisObject ,用于控制原生方法在从 QML 调用时如何处理this 对象。

Qt Quick 3D 模块

  • 为模型添加了自动细节级别(LOD)支持。这允许在资源导入期间生成网格的简化版本,并在渲染时自动选择适当的细节级别。
  • 新增了显式细节级别(LOD)支持,可根据相机距离控制模型的透明度。
  • 新增了“ExtendedSceneEnvironment ”,内置了景深、色彩分级、光晕、暗角、镜头耀斑等效果。这些效果会同时执行,与各自需要一个或多个渲染通道的独立后处理效果相比,效率更高。
  • 增强了DebugView 功能,新增了渲染统计信息、活动网格和纹理资源列表、实时渲染通道信息,以及用于交互式切换设置的控件,例如线框模式和来自DebugSettings 的材质覆盖设置。
  • 新增了DebugSettings ,可通过SceneEnvironment 访问,允许通过编程方式控制线框模式和材质覆盖等设置,以仅渲染基于物理的材质的某些方面。
  • 新增了InfiniteGrid ,在水平平面上实现了一个带有淡出效果的无限网格。
  • 新增了内置的简单雾效支持,可通过SceneEnvironment 调用。启用后,在渲染场景中的模型时,将应用深度或高度雾效。
  • 改进了使用实例化渲染时的选取功能。
  • 为PrincipledMaterial 和SpecularGlossyMaterial
  • 反射探针:新增支持使用提供的立方贴图纹理,而无需渲染场景。
  • 增强了后处理效果,使其能够正确响应运行时着色器源文件 URI 的变化。
  • 添加了基于磁盘的持久化缓存,用于存储运行时生成的材质着色器数据。预计这将缩短应用程序的启动时间和视图切换时间。

Qt WebView 模块

Qt Multimedia 模块

  • ffmpeg 媒体后端在 6.4 版本中作为技术预览推出,现已成为 macOS、Windows、Android 以及除 Yocto 发行版以外的 Linux 系统的默认后端。原生后端仍然可用,但支持有限。
  • 引入了QScreenCapture 类,这是一种新型视频输入。现在可以将QScreenCapture 中的视频通过QMediaCaptureSession 直接传输到输出端,例如QMediaRecorder 或QVideoWidget 。屏幕捕获功能仅在使用ffmpeg媒体后端时可用。

平台变更

WebAssembly

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

桌面平台

Windows

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

macOS

Linux 上的 Wayland 客户端

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

移动平台

Android

  • 将 Gradle 更新至 8.0,并将 Android Gradle 插件 (AGP) 更新至 7.4.1(需要 JDK 11 或更高版本)。
  • NDK 已更新至 r25b(25.1.8937393)。
  • 现在支持的版本列表为 Android 8.0(API 26)或更高版本。
  • 将最低平台构建 SDK 版本提升至 33(QT_ANDROID_API_VERSION)。
  • 通过 Qt 文件/目录功能,支持对内容方案 URI 进行更多操作。
  • 针对 Android 范围存储中的 `QStandardPaths ` 进行了修复和文档更新。
  • 从 Qt(而非 Android 系统)打印 Qt JNI 异常。
  • 修复了对 APK 签名方案 v2 的支持。

iOS

嵌入式平台

Boot to Qt

  • Boot to Qt stack 已更新为使用 yocto 4.1.2 (langdale)。
  • 支持使用基于 Docker 的工具链的 macOS 主机。
  • 目标硬件的支持级别已更新,现在针对特定的硬件和操作系统组合提供了多个支持级别。

API 变更列表

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