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。
- QLocalename()、bcp47Name() 和 uiLanguages() 现在允许调用者指定名称中标记之间的分隔符。
- QLocale 现在可以本地化格式化日期时间的时区部分。
- 对两位数年份的日期(和日期时间)解析现在允许调用者控制选择这些年份的世纪。
- QCalendar 现在有了 matchCenturyToWeekday(),以支持两位数年份的解析。
- QDateTime 现在接受 TransitionResolution 参数,允许调用者控制时区转换的解析方式。间隙中日期时间的默认分辨率现在有效,但其 time() 和 date() 可能与 toMSecsSinceEpoch() 报告的一致,而不是要求的一致。
Qt D-Bus 模块
- 删除了过时的 <qdbusmacros.h> 头文件。请使用 <qtdbusglobal.h> 代替。
- 新函数QDBusAbstractInterface::setInteractiveAuthorizationAllowed() 允许为异步调用设置
ALLOW_INTERACTIVE_AUTHORIZATION
标志。
Qt Graphs 模块
Qt Graphs3D
- 数据 api 无需在堆内存中创建每个数据项。
- 添加了图像渲染功能。
Qt Graphs2D
- 2D 图形的技术预览。
- 包含对条形图、线形图和散点图的初始支持。
Qt GRPC 模块
- 添加了使用拦截器自定义 QtGRPC 调用和流行为的功能。现在您可以子类化 QGrpcClientInterceptor 并覆盖所需的拦截方法。
- 引入了QGrpcServerStream 、QGrpcClientStream 和 QGrpcBidirStream 类。这些类分别用于进行客户端、服务器和双向流调用。
注: Qt GRPC 模块正处于技术预览阶段。
Qt GUI 模块
- 添加了QIconEngine 实现,可访问 Windows 10 和 11、macOS 和 iOS 以及 Android 上的本地图标库。
- 添加了新的事件类型QEvent::ChildWindowAdded 和QEvent::ChildWindowRemoved 以及相应的QChildWindowEvent 类,以便在添加和删除子窗口时通知窗口。
- 在所有平台上启用加载可变应用程序字体(在 Windows 上需要 DirectWrite 或 FreeType 后端。)
- QFont 新增了与 协同工作的 API。variable fonts
- 新的QFont::Tag 类型可用于与新的可变字体支持 API 以及在 Qt XML 6.6 中作为初步 API 引入、现已最终确定的support for typographical features 一起指定轴。
Qt Multimedia 模块
- FFmpeg 多媒体后端现在可与 Windows 上的 FFmpeg 进行动态链接。在线安装程序提供了预构建的 FFmpeg 二进制文件。使用 FFmpeg 后端的 Windows 应用程序现在必须使用 windeployqt 将 FFmpeg 二进制文件捆绑为安装程序的一部分。
- 新的MediaPlayer::autoPlay 和Video::autoPlay 属性可用于在设置了媒体源后自动开始播放。
- QCameraDevice 新增了correctionAngle 属性。该属性表示补偿摄像机物理旋转所需的旋转角度。
Qt Network 模块
- 已添加QHttpHeaders 类,用于表示 HTTP 标头。
- 已添加 std::chrono 支持,以便通过QNetworkRequest 和QNetworkAccessManager 设置传输超时。
- 已添加QNetworkRequestFactory 类(技术预览版)。该类是用于创建网络请求的便利类。
- 已添加QRestAccessManager 和QRestReply (技术预览版)。这些类是针对 RESTful 用例调整的便利封装类。
Qt OPC UA 模块
- 添加了新的QOpcUaHistoryEvent 和QOpcUaHistoryReadEventRequest 类,以便读取历史事件。
- 添加了新的QOpcUaGenericStructHandler 类和相关数据类,以支持通用 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 编译器
- 写入值类型属性的绑定和函数现在可编译为 C++。
- 可选链现在可以编译为 C++
- 迭代中的......现在可以编译为 C++
Qt Quick 模块
- 添加了用于从文件加载的TextEdit.textDocument.source 属性,以及用于写入的save() 和saveAs() 函数。在文本处理用例中,这些函数旨在取代XMLHttpRequest 。
- 为TextEdit 和TextArea 添加了cursorSelection 属性,用于检查和修改所选文本的属性。
- 更新了文本编辑器示例以演示这些功能。
- 添加了新的文本呈现器,它能更好地呈现超大文本。可以通过将renderType 设置为
Text.CurveRendering
来选择它。 - 文本类获得了新的 API,可与variable fonts 配合使用。
- 矩形现在可以有不同的radii on each corner 。
- 添加了对将 QWindows 嵌入Qt Quick 场景的初步支持,以及 Window 的父属性,以允许设置 Window 的可视化父属性。
- Control 的focusReason 和focusPolicy 属性已移至Item 。
- 添加了QQuickRhiItem 作为QQuickFramebufferObject 的现代替代。这允许创建自定义QQuickItem 对象,通过 Qt XML 渲染硬件接口支持的任何硬件加速图形 API(即 OpenGL、Vulkan、Direct3D 或 Metal)渲染 3D 图形。
- 添加了一个新的 QQuickRenderControl 示例,该示例使用QRhi ,因此完全可移植,并能与所有受支持的 3D API 配合使用。该示例展示了如何以跨平台方式将Qt Quick 内容重定向到纹理中。
Qt Quick Controls 模块
- 添加了以下接受强类型参数的函数:
- pushItem()
- pushItems()
- popToItem()
- popToIndex()
- popCurrentItem()
- replaceCurrentItem()
- 与push 、pop 和replace 函数不同,这些函数可由 QML 编译器编译为 C++。
Qt Quick 形状模块
- 现在已正式支持曲线渲染器和相关属性preferredRendererType ,不再被视为实验性的。
- 已添加pathHints 属性,用于表征形状。渲染器可使用该属性优化处理和渲染路径。
- 现在,形状具有基于形状边界矩形的隐式尺寸,并将在布局中进行适当定位。添加了fillMode 、horizontalAlignment 和verticalAlignment 属性,用于修改当项目的显式尺寸与隐式尺寸不同时形状的行为方式。
- 添加了svgtoqml工具作为技术预览。这是一个可用于将 SVG 文件转换为 QML 代码的工具。它目前被认为是实验性的,只支持Qt SVG 支持的一部分。
Qt Quick Timeline 模块
- QtQuick.Timeline.BlendTrees 子模块添加了新的 API,以实现多个时间线动画的混合。
Qt Quick 3D 模块
- QQuick3DRenderExtension 是一个用于实现应用程序端渲染扩展的新类,这意味着用户现在可以扩展 QtQuick3D 的渲染管道,而无需修改 QtQuick3D 引擎。与 提供的新的半公开 API 和 Qt XML 渲染硬件接口( )一起,自定义渲染代码现在可以插入 的渲染管道,既可以作为主渲染通道的一部分进行渲染,也可以作为独立的渲染记录进行渲染。独立渲染记录的结果可以提供给前面的扩展,而这些扩展可以通过 的声明顺序进行控制。独立渲染扩展还可以作为纹理项的纹理提供者公开,这意味着它们的结果可以与其他消耗 '纹理类型的 类型(如材质、特效等)一起使用。QtQuick3DQRhi QtQuick3D extensions QtQuick3D QtQuick3D
- QSSG 系列类已记录在案,并作为 API 提供,兼容性承诺有限。Qt Spatial Scene Graphs(Qt 空间场景图)类提供了与QtQuick3D 的内部类型交互的访问权限和有用的助手。QSSG 类可分为两大类。第一组提供访问必要的状态,以便通过QRhi 对QtQuick3D 场景进行自定义渲染,而第二组类则提供访问QtQuick3D 渲染对象的权限,以及使用QtQuick3D 内部使用的相同基础架构修改、获取或重新渲染这些渲染对象的助手。
- QSSGRenderExtension - 渲染扩展的后台实现。
- QSSGRenderContextInterface - 内部使用的子系统的集合类。QtQuick3D
- QSSGRhiContext,QSSGRhiGraphicsPipelineState,QSSGRhiSamplerDescription -QRhi QtQuick3D 使用的便利类。
- QSSGFrameData - 渲染扩展使用的每帧数据。
- QSSGRenderHelpers,QSSGModelHelpers,QSSGCameraHelpers, 和QSSGRenderExtensionHelpers - 用于访问、设置和渲染QtQuick3D 渲染器的辅助类。
- CustomMaterial sourceAlphaBlend destinationAlphaBlend 渲染扩展使用的每帧数据。
- 纹理新增了textureProvider 和tilingModeDepth 属性。
- View3D 纹理模块新增了 、 和 属性。explicitTextureWidth explicitTextureHeight effectiveTextureSize
Qt Quick 3D 物理模块
- HeightFieldShape:通过image 属性,支持使用 QML 图像类型作为源。
- ConvexMeshShape:通过geometry 属性,支持使用QQuick3DGeometry 作为源代码。
- TriangleMeshShape:支持通过geometry 属性使用QQuick3DGeometry 作为源代码。
- PhysicsWorld:
- 添加reportKinematicKinematicCollisions 和reportStaticKinematicCollisions 属性,分别启用机械运动和静态运动碰撞报告。
- 支持设置模拟线程数。
- PhysicsNode:添加对碰撞过滤的支持。现在可以为节点指定组 ID 并忽略它们之间的碰撞。
- PhysicsBody:通过simulationEnabled 属性,增加对禁用体模拟的支持。
Qt Serial Bus 模块
- 为QCanDbcFileParser 添加了一个方法,可使用 UTF-8 以外的编码进行 DBC 文件解析。
Qt SQL 模块
- 删除了过时的 <qsql.h> 头文件。使用 <qtsqlglobal.h> 代替。
Qt WebEngine 模块
- 添加了新的 API QWebEngineWebAuthUXRequest 和 QML 类型 WebEngineWebAuthUXRequest,以支持 FIDO2 用户验证和常驻凭证。
- 添加了新 apiQWebEngineDesktopMediaRequest ,以启用桌面屏幕捕获的源选择。
- 已添加 WebEngineDriver,用于跨浏览器自动测试网站。WebEngineDriver 基于ChromeDriver。
- 已添加QWebEngineUrlRequestInfo::requestBody ,以便使用QIODevice API 访问请求正文。
- 已添加forceDarkMode (QML) 和ForceDarkMode (C++) 设置,以便自动使用深色主题渲染所有网页内容。
- 已添加信号QWebEngineProfile::clearHttpCacheCompleted 和QQuickWebEngineProfile::clearHttpCacheCompleted 。
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::Options 的QSvgRenderer 和QSvgWidget 添加了设置器和获取器。新功能默认已启用。
工具
Qt Widgets 设计器
- Qt Widgets Designer 现在可将完全限定的枚举值写入 文件,以支持作用域枚举和 。对读取这些值的支持已回传至 6.6.1 和 6.5.4。
.ui
Qt for Python
平台变更
桌面平台
视窗
- 已添加 Windows 11 风格
- 已添加QNativeInterface::QWindowsScreen ,可在 Windows 上访问QScreen 的底层句柄。
macOS
- macOS 14 现已成为受支持的构建和目标平台。
Linux 上的 Wayland 客户端
- 已添加QNativeInterface::QWaylandScreen ,可访问QScreen 的底层 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 功能的特性:
- Qt Quick 查看 Android 类,以便在 Java 或 Kotlin 代码中使用 (技术预览)。Qt Quick
- 用于 Android Studio 的 Android StudioQt 工具(技术预览版)。
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.