Qt 6.7 中的新功能

Qt 6.7 中的新功能

Qt Core 模块

  • 添加了QSpan ,这是 Qt 对 C++20 std::span 的重新实现。
  • 添加了Qt::strong_orderingQt::weak_orderingQt::partial_ordering 类,它们是std::*_ordering 类的 C++17 兼容实现。
  • 添加了辅助宏,以便在 Qt 类中方便地实现关系运算符。这些宏在 C++20 版本中提供了 operator<=>(),而在 C++17 版本中则返回到所有六个关系运算符。
  • 将这些辅助宏应用于QDate,QTime,QDateTime,QTimeZoneqfloat16 类。
  • 添加了新类QAtomicScopedValueRollback
  • 添加了Qt::Key_micro ,以最终取代错误命名的 Key_mu:它是微信号 U+00B5,而不是希腊字母 mu、U+03BC 或 U+039C。
  • QLocalename()、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 并覆盖所需的拦截方法。
  • 引入了QGrpcServerStreamQGrpcClientStream 和 QGrpcBidirStream 类。这些类分别用于进行客户端、服务器和双向流调用。

注: Qt GRPC 模块正处于技术预览阶段。

Qt GUI 模块

Qt Multimedia 模块

  • FFmpeg 多媒体后端现在可与 Windows 上的 FFmpeg 进行动态链接。在线安装程序提供了预构建的 FFmpeg 二进制文件。使用 FFmpeg 后端的 Windows 应用程序现在必须使用 windeployqt 将 FFmpeg 二进制文件捆绑为安装程序的一部分。
  • 新的MediaPlayer::autoPlayVideo::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_VALUEQML_STRUCTURED_VALUE ,并从 QML 中构造此类类型的对象。事实上,自 Qt 6.5 起您就可以这样做了,但现在正式支持了。

Qt Quick 编译器

  • 写入值类型属性的绑定和函数现在可编译为 C++。
  • 可选链现在可以编译为 C++
  • 迭代中的......现在可以编译为 C++

Qt Quick 模块

Qt Quick Controls 模块

Qt Quick 形状模块

  • 现在已正式支持曲线渲染器和相关属性preferredRendererType ,不再被视为实验性的。
  • 已添加pathHints 属性,用于表征形状。渲染器可使用该属性优化处理和渲染路径。
  • 现在,形状具有基于形状边界矩形的隐式尺寸,并将在布局中进行适当定位。添加了fillModehorizontalAlignmentverticalAlignment 属性,用于修改当项目的显式尺寸与隐式尺寸不同时形状的行为方式。
  • 添加了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 标准中某些元素的支持。这些元素包括遮罩、符号、标记、图案、滤镜和滤镜原语(feMerge、feColorMatrix、feGaussianBlur、feOffset、feComposite、feFlood)
  • 已添加QtSvg::Options 标志,用于启用或禁用新元素的渲染。
  • QtSvg::OptionsQSvgRendererQSvgWidget 添加了设置器和获取器。新功能默认已启用。

工具

Qt Widgets 设计器

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

平台变更

桌面平台

视窗

macOS

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

Linux 上的 Wayland 客户端

WebAssembly

  • 添加了拖放支持(拖放)。现在,当用户在应用程序窗口上拖放内容时,Qt 将发送拖放事件。
  • OpenGL ES 3 / WebGL2 现在是默认设置,并可回退至 OpenGL ES2 / WebGL 1。
  • Emscripten 版本更新至 3.1.50

移动平台

安卓

  • 重构了 Android 插件的 Java 代码,包括
    • 简化架构和各种类之间的关系(例如 QtActivity、QtActivityLoader 和 QtActivityDelegate 之间的关系)。
    • 将 QtLoader 类从公共绑定包中移出。
    • 删除了反射的使用。
  • 为 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 支持。
  • 目标硬件支持级别已更新,新增了第 3 级支持的板卡:
    • 亚马逊 AWS EC2 ARM64
    • 英伟达 Jetson AGX Orin 开发套件
    • NXP i.MX8M Nano LPDDR4 EVK(取代 DDR4 EVK 变体)
    • 高通机器人 RB5 开发套件
    • 德州仪器 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() 已移出技术预览版。

网络操作系统

  • 已验证 Qt 6.7 可在 LG webOS OSE 2.25.0(Qt for webOS)上运行。

应用程序接口变更列表

这些页面概述了 Qt 6.7 中的 API 变化:

© 2025 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.