本页内容

Qt 6.7 的新功能

Qt 6.7 的新功能

Qt Core 模块

  • 新增了QSpan ,这是 Qt 对 C++20 std::span 的重新实现。
  • 新增了Qt::strong_ordering 、Qt::weak_ordering 和Qt::partial_ordering 类,它们是std::*_ordering 类的C++17兼容实现。
  • 添加了辅助宏,以便在 Qt 类中便捷地实现关系运算符。这些宏在 C++20 构建中提供 operator<=>(),而在 C++17 构建中则回退到全部六个关系运算符。
  • 将这些辅助宏应用于QDate 、QTime 、QDateTime 、QTimeZone 和qfloat16 类。
  • 新增了QAtomicScopedValueRollback 类。
  • 新增了Qt::Key_micro ,最终将取代命名有误的Key_mu:它表示的是微符号U+00B5,而非希腊字母mu(U+03BC或U+039C)。
  • QLocale' 的 name()、bcp47Name() 和 uiLanguages() 方法现在允许调用者指定名称中标签之间使用的分隔符。
  • QLocale 现在会(在可能的情况下)对格式化日期时间中的时区部分进行本地化处理。
  • 对两位数年份的日期(和日期时间)解析现在允许调用者控制选取这些年份所属的世纪。
  • QCalendar 现在提供了 matchCenturyToWeekday() 方法,以支持对两位数年份的解析。
  • QDateTime 现在接受 TransitionResolution 参数,允许调用者控制时区转换的解析方式。间隙中日期时间的默认解析现在是有效的,但其 time() 和可能的 date() 现在与 toMSecsSinceEpoch() 报告的结果一致,而不是与请求的结果一致。

Qt D-Bus 模块

Qt Graphs 模块

Qt Graphs3D

  • 数据 API 不再要求将每个数据项都创建在堆内存中。
  • 添加了“渲染到图像”功能。

Qt Graphs2D

  • 2D 图表的技术预览版。
  • 包含对条形图、折线图和散点图的初步支持。

Qt GRPC 模块

  • 新增了使用拦截器来定制 QtGRPC 调用和流行为的功能。现在,您可以继承 QGrpcClientInterceptor 并重写所需的拦截方法。
  • 引入了QGrpcServerStream 、QGrpcClientStream 和QGrpcBidirStream类。这些类分别用于实现客户端、服务器端和双向流调用。

注意: Qt GRPC 模块目前处于技术预览阶段。

Qt GUI 模块

Qt Multimedia 模块

  • FFmpeg 多媒体后端现在可在 Windows 上与 FFmpeg 进行动态链接。预编译的 FFmpeg 二进制文件通过在线安装程序提供。使用 FFmpeg 后端的 Windows 应用程序现在必须使用 windeployqt 将其作为安装程序的一部分打包 FFmpeg 二进制文件。
  • 新增的MediaPlayer::autoPlay 和Video::autoPlay 属性可用于在设置媒体源后自动开始播放。
  • QCameraDevice 新增了correctionAngle 属性。该属性表示为补偿相机相对于其原生方向的物理旋转所需的旋转角度。

Qt Network 模块

Qt OPC UA 模块

Qt Protobuf 模块

  • 新增了序列化器,为基于QProtobufMessage 的类实现了JSON序列化和反序列化功能。
  • 在Qt Protobuf 生成器中增加了对“可选”字段的支持。如果消息字段被标记为“可选”,除了常规字段的方法外,它还会拥有 clear<fieldName> 和 has<fieldName> 方法。
  • 由Qt Protobuf 生成器生成的枚举字段现在会保留首字母的大小写。此前,生成器会将生成的枚举字段名称首字母大写。

注意: Qt Protobuf 模块目前处于技术预览阶段。

Qt Qml 模块

  • QML Language Server 新增了以下功能:格式化、语义和代码片段补全、重命名用法,以及通过 QT_QML_GENERATE_QMLLS_INI 在 CMake 中设置文件生成。
  • QML 文件的翻译上下文可通过以下方式设置pragma Translator
  • 现在可以在值类型上声明QML_CONSTRUCTIBLE_VALUE 和QML_STRUCTURED_VALUE ,并从QML中构造此类类型的对象。实际上,自Qt 6.5起这一功能已可使用,但现在已获得官方支持。

Qt Quick Compiler

  • 将值类型的属性写入的绑定和函数现在可以编译为 C++
  • 可选链式调用现可编译为 C++
  • for..in 迭代现在可以编译为 C++

Qt Quick 模块

Qt Quick Controls 模块

Qt Quick Shapes 模块

  • 曲线渲染器及其相关属性preferredRendererType 现已获得官方支持,不再被视为实验性功能。
  • 新增了pathHints 属性,用于描述形状。渲染器可利用该属性优化路径的处理和渲染。
  • 形状现在具有基于其边界矩形的隐式大小,并在布局中得到适当定位。新增了fillMode 、horizontalAlignment 和verticalAlignment 属性,用于在项目被赋予与隐式大小不同的显式大小时,修改形状的行为。
  • 工具svgtoqml作为技术预览版已添加。该工具可用于将 SVG 文件转换为 QML 代码。目前该工具仍处于实验阶段,仅支持Qt SVG 所支持功能的一小部分。

Qt Quick Timeline 模块

  • QtQuick.Timeline.BlendTrees子模块新增了 API,用于实现多个时间线动画的混合。

Qt Quick 3D 模块

Qt Quick 3D 物理模块

Qt Serial Bus 模块

  • 在QCanDbcFileParser 中添加了一个方法,支持使用UTF-8以外的编码解析DBC文件。

Qt SQL 模块

  • 已移除已弃用的 <qsql.h> 头文件。请改用 <qtsqlglobal.h>。

Qt WebEngine 模块

Qt Widgets 模块

  • 添加了QRhiWidget 类(处于技术预览阶段),用于通过 Qt 渲染硬件接口支持的任何硬件加速图形 API(即 OpenGL、Vulkan、Direct3D 或 Metal)渲染 3D 图形。
  • QCheckBox 新增了一个名为 checkStateChanged 的信号,该信号会以类型安全的Qt::CheckState 枚举值形式发出新的检查状态。
  • QDateTimeEdit 新增了一个 `timeZone ` 属性
  • 在运行 Windows 11 及以上版本的系统上,默认使用新的 Windows 11 控件样式。该样式支持 Windows 深色模式。

Qt SVG 模块

  • 新增了对 SVG 1.1 标准中部分元素的支持。这些元素包括 Mask、Symbol、Marker、Pattern、Filter 以及 Filter Primitives(feMerge、feColorMatrix、feGaussianBlur、feOffset、feComposite、feFlood)
  • 新增了QtSvg::Options 标志,用于启用或禁用这些新元素的渲染。
  • 为QSvgRenderer 和QSvgWidget 添加了QtSvg::Options 的设置器和获取器。这些新功能默认处于启用状态。

工具

Qt Widgets Designer

  • Qt Widgets Designer 现在会将完全限定的枚举值写入.ui 文件,以支持作用域枚举和Qt for Python 。对读取这些值的支持已回溯移植到6.6.1和6.5.4版本。

平台变更

桌面平台

Windows

macOS

  • macOS 14 现已成为受支持的构建和目标平台。

Linux 上的 Wayland 客户端

WebAssembly

  • 新增拖放支持(拖拽操作)。当用户将内容拖放到应用程序窗口上时,Qt 现将发送拖放事件。
  • OpenGL ES 3 / WebGL2 现已成为默认选项,并支持回退至 OpenGL ES2 / WebGL 1。
  • Emscripten 版本更新至 3.1.50

移动平台

Android

  • 重构了 Android 插件的 Java 代码,具体包括:
    • 简化了架构以及各个类之间的关系(例如,QtActivity、QtActivityLoader 和 QtActivityDelegate 之间的关系)。
    • 将 QtLoader 类从 public bindings 包中移出。
    • 移除了对反射的使用。
  • 为 Android 添加了子窗口的初步支持,以保持与 Qt 及其其他 QPA 的一致性。因此,QScreen::grabWindow() 目前暂时不支持。
  • 将 Android 14 设为支持的最高平台版本,并将默认平台 SDK 和目标级别设为 API 34。
  • 将支持的 Android NDK 版本设置为 r26b (26.1.10909125),JDK 版本设置为 17。
  • 将“移动”类别的示例与 iOS 示例保持一致。
  • 添加了QNativeInterface::QAndroidScreen ,该方法可访问QScreen 的 Android 显示 ID。
  • 新增了对使用 ndk-stack 配合 androidtestrunner 进行测试崩溃报告美化打印的支持。
  • 添加了 CMake 变量 QT_ANDROID_DEPLOYMENT_TYPE,用于显式设置 Android 包的部署类型。
  • 全面重写并更新了 Qt for Android 平台文档。
  • 引入了可在 Android 项目中发挥 Qt 强大功能的新特性:

iOS

  • iOS 17 现已成为受支持的目标平台。

嵌入式平台

Boot to Qt

  • 已添加对 Yocto 4.3(Nanbield)的支持。
  • 已新增对 ARM Linux 开发主机的支持。
  • 目标镜像中已包含对 Squish 的支持。
  • 目标硬件支持级别已更新,新增了以下 Tier 3 级别的支持主板:
    • Amazon AWS EC2 ARM64
    • NVIDIA Jetson AGX Orin 开发套件
    • NXP i.MX8M Nano LPDDR4 EVK(取代 DDR4 EVK 版本)
    • 高通 Robotics RB5 开发套件
    • TI SK-AM69

VxWorks

  • 已将 VxWorks 23.09 作为技术预览版添加支持。

构建系统变更

  • Qt C++ 头文件现已包含针对IWYU工具的元数据。
  • CMake:现在可以通过设置 DEPLOY_TOOL_OPTIONS 来调整 qt_generate_deploy_app_script() 和 qt_deploy_runtime_dependencies() 中 *deployqt 工具的参数。
  • CMake:qt_add_library() 现在会考虑 BUILD_SHARED_LIBS 变量的值。如果该变量已定义,在添加库目标时,其优先级将高于 qt_add_library() 中的库类型检测逻辑。
  • CMake:现在,qt_standard_project_setup() 允许您设置应用程序的本机 UI 语言,以及 UI 被翻译成的语言。 随后,qt_add_translations() 调用会采用这些设置,生成与给定语言匹配的 .ts 和 .qm 文件,并为本地语言生成一个“仅复数形式”的 .ts 文件。
  • CMake:现在,您可以向 qt_add_translations() 传递多个目标,以便从中提取翻译。 或者,您可以让 qt_add_translations() 收集项目的所有目标(通过新的 qt_collect_translation_source_targets() 函数完成),并可选择在目录或目标级别排除不需要的目标。
  • CMake:qt_add_translations() 已退出技术预览阶段。

WebOS

  • Qt 6.7 已通过与 LG webOS OSE 2.25.0(Qt for webOS)的兼容性验证。

API 变更列表

以下页面概述了 Qt 6.7 中的 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.