Qt 6.9 中的新功能

Qt 6.9 中的新功能

Qt Core 模块

Qt Graphs 模块

  • Surface3D 添加了透明度支持,利用了QtQuick3D 中与顺序无关的透明度。到目前为止,QtQuick3D 只实现了近似技术(WeightedBlended),因此还不能使用精确技术。
  • 添加了rootNode ,允许在QtQuick3D 应用程序中向View3D 注入图形。
  • 添加了另一种提取方法 doRayPicking,可与View3D 图形注入一起使用。
  • 已添加QSpline3DSeries 类,允许用户以样条曲线渲染数据。
  • Bars3D 添加了valueColoringEnabled 属性,该属性允许根据每个条形图的值对其分别着色。
  • QAbstract3DAxis 添加了scaleLabelsByCount 属性,允许用户定义轴标签是否应根据标签总数进行缩放。
  • QAbstract3DAxis 添加了labelSize 属性,允许用户按每个轴设置轴标签的大小。
  • Bars3DScatter3DSurface3D 添加了对设置 X 和 Y 方向上最小和最大旋转的支持。
  • QAbstractAxis 添加了alignment 属性,允许用户左、右、上或下对齐坐标轴。
  • 为 QGraphsView 添加了 plotArea 属性,允许用户定义绘制图形的矩形区域。
  • 为 QGraphsView 添加了缩放和平移支持。
  • 为面积图、线图、饼图和散点图添加了自定义输入处理支持。

Qt GRPC 模块

  • 添加了Qt GRPC 客户端指南概述示例。
  • 改进并完善了所有文档和示例。
  • 优化了流 RPC,以便在高负载情况下进行写入。

Qt GUI 模块

  • QBrush 和 优化了与颜色和样式值进行比较或赋值的操作符。QPen
  • QPainter::setBrush() 获得了新的优化重载,可将颜色设置为纯色笔刷。
  • QPainterStateGuard 是一个新的 RAII 类,可确保在 上进行均衡的保存/恢复操作。QPainter
  • QColorSpace 为设置和获取四原色空间点提供了 API。
  • 已添加Qt::ExpandedClientAreaHint ,用于请求将窗口的客户端区域扩展到可能被其他 UI 元素(如窗口的标题栏控件或其他系统 UI)遮挡或与之冲突的区域。
  • 已添加Qt::NoTitleBarBackgroundHint ,用于请求绘制无背景色的窗口标题栏。
  • 已添加QWindow::safeAreaMargins() 以反映窗口的安全区域。
  • 添加了对文本中表情符号序列的解析和自动检测,确保根据 Unicode 规范在需要时使用彩色字体。可以使用QTextOption::DisableEmojiParsing 或在配置 Qt XML 时禁用表情符号分割器来禁用每个布局的解析器。
  • 已添加QFontDatabase::addApplicationEmojiFontFamily() 和相关函数,用于自定义应用程序使用的默认表情符号字体。
  • 添加了QFontInfo::variableAxes() 用于检索字体支持的变轴信息。
  • QImage::flipped() 和QImage::flip() 为翻转图像提供了基于Qt::Orientation 的 API,使代码比基于 bool 的QImage::mirrored() 更易于阅读。
  • QRhiGL_EXT_multisampled_render_to_texture:在支持 OpenGL ES 的移动 GPU 上运行时,尽可能使用 GL_EXT_multisampled_render_to_texture。对于Qt QuickQt Quick 3D 等客户端来说,这可能会显著提高在平铺 GPU 架构上进行多采样渲染的性能。
  • QRhi:在使用 Direct 3D 11 和 12 的 Windows 系统中,QWindow 更新请求现在由专用的 vblank 观察线程驱动,从而减少了 CPU 负载和延迟。这意味着Qt Quick 等客户端在使用鼠标或触摸进行交互式拖动项目时有望减少延迟。
  • QRhi:在适用的情况下添加了对可变速率着色的支持(Direct 3D 12、Vulkan、Metal)。这样就能在 visionOS 上使用Qt Quick 3D XR 支持动态眼动。
  • QRhi:现在 OpenGL 也可选择支持每渲染器目标混合。
  • QRhi:新增了对多种整数和深度纹理格式的支持。
  • QRhi:在使用 Vulkan 时,新增了对传递应用程序提供的等待/信号 semaphores 的支持。这些信号会传递给 vkQueueSubmit 和 Present,从而允许集成依赖多线程并需要与场景图渲染器适当同步的外部渲染/计算引擎。
  • 使用QPdfWriter::author() 属性设置生成的 PDF 文档的作者。

Qt HttpServer 模块

Qt Multimedia 模块

Qt Network 模块

Qt Network 认证模块

Qt Protobuf 模块

  • 改进并完善了所有文档。
  • 添加了HEADER_GUARD 选项,以指定用于保护生成的头文件的机制。
  • 添加了protobuf-unsafe-registry 功能,以便在访问自定义 protobuf 序列化器时以安全性换取性能。

Qt QML 模块

  • QML Language Server 现在可提供文档结构的大纲视图。这允许客户端(如集成开发环境或代码编辑器)将 qml 文档的结构表示为交互式大纲,在分层视图中显示对象、属性、方法和其他代码元素。
  • 为 qmlformat 添加了最大行长功能:现在,qmlformat 可根据允许的最大行长来控制断行位置,从而确保 QML 文档的一致性和可读性。

Qt Quick 模块

  • 添加了SafeArea 附加属性,用于管理项目或窗口的安全区域。
  • 添加了剪切组件,可方便地对项目应用剪切变换。
  • 已添加FontMetrics::capitalHeight 属性,该属性以前在Qt Quick API 中缺失。
  • 添加了FontInfo 类型,用于检索字体分辨率的结果,与 C++ 中的QFontInfo 类相匹配。
  • 当使用的图形 API 是 OpenGL 时,重新引入了对QQuickPaintedItem 的 FramebufferObject 渲染模式的支持。这是作为 Qt 5 时代应用程序的移植辅助工具提供的,这些应用程序需要在其 QQuickPaintedItems 中使用QPainter 的传统 OpenGL 绘画引擎。
  • 优化了场景图渲染器的缓冲池逻辑,以防止在具有大型几何图形的场景中出现内存使用高峰。此外,还减少了有大量项目的场景的开销,尤其是在使用 OpenGL 运行时。

Qt Quick Controls 模块

  • 添加了ContextMenu 。该模块可附加到任何项目,以便在特定平台事件(如右键或上下文菜单键)发生时显示上下文菜单。
  • TextField 和 现在默认提供 。如果已为这些类型自定义了上下文菜单, 将不会打开自己的上下文菜单(在右键单击或上下文菜单按键时)。TextArea ContextMenu ContextMenu

Qt Quick 效果模块

  • 新增RectangularShadow 元素,用于快速显示圆角矩形阴影/光晕。API 与 CSS 框阴影类似,具有颜色、偏移、扩散和模糊值。

Qt Quick 3D 模块

  • 添加了加权混合阶独立透明度 (OIT) 实现,用于渲染透明对象。
  • 添加了对 32 位无符号整数纹理格式的支持。
  • 改进了对实例化模型的阴影贴图边界的控制,当计算变得昂贵时可能会提高性能。
  • 通过新的 "超 "分辨率设置,添加了对 4K 阴影贴图的支持。
  • 在 GLSL ES 片段着色器中添加了强制使用中等精度浮点数的选项。主要作为性能调整工具提供。将环境变量 QT_QUICK3D_MEDIUM_PRECISION 设置为非零值。这对其他类型的着色器(也包括非 ES GLSL)没有影响。
  • DebugView 现在支持可视化点光源阴影的边界。
  • 将内置几何图形从Qt 3D 移植到QtQuick3D.Helpers。PlaneGeometry现在,SphereGeometryCylinderGeometryConeGeometryTorusGeometryQtQuick3D.Helpers 中可用。
  • 已将ExtrudedTextMeshQt 3D 移植到QtQuick3D.Helpers。
  • 在材质编辑器中添加了对自定义材质使用实例化的支持。

Qt Quick 3D XR 模块

  • 通过新的XrHapticFeedback 项目,使用振幅、持续时间和频率为控制器的触觉输出添加了支持。
  • XrInputAction 中添加了新属性,以便有条件地禁用动作,而无需在所有处理程序函数中进行测试。
  • 为 OpenXR 添加了 Metal 后端,以支持在 macOS 上的 Meta XR 模拟器中运行。
  • multiViewRenderingEnabled 属性现在是只读属性,运行时不再可能切换多视图渲染。如果支持多视图呈现,则会在应用程序的整个生命周期内启用。在不需要多视图呈现的移植情况下,可通过将环境变量 QT_QUICK3D_XR_DISABLE_MULTIVIEW 设置为非零值来禁用多视图呈现。

Qt Quick 矢量图像模块

  • 新增了对色彩动画和变换动画的初步支持,与 Qt SVG 中的当前支持相匹配。

Qt SQL 模块

Qt SVG 模块

  • QtSvg::Options 添加了三个新值,用于禁用动画。
  • 支持填充、描边和变换属性的 CSS 动画。

Qt 虚拟键盘模块

  • 添加了使用轻触键的新日文布局。
  • 已添加对调整按键音量的支持。

Qt WebEngine 模块

Qt Widgets 模块

  • QAbstractItemView 获得了一个新属性 ,用于指定何时进行全视图更新,而不是试图找出 dataChanged() 中发生变化的部分。当大型模型中的大量项目发生变化时,这一点尤其有用,因为更新矩形计算可能比全视图更新耗时更长。updateThreshold
  • QComboBox 通过将 属性设置为 ,可以使用项目视图的委托来绘制标签。labelDrawingMode UseDelegate
  • QHeaderView 只要不调整各部分的大小、隐藏或重新排序,"...... "已进行了优化,可显著减少大型模型的内存使用量。
  • 辅助技术和自动测试工具可以使用设置为QWidget::accessibleIdentifier 的标识符来识别特定的部件。
  • QDockWidget 的停靠位置不能通过QDockWidget::dockLocation 属性明确设置。
  • QStackedWidget 现在,当一个新的 widget 被添加到堆栈时,会发出 () 信号。widgetAdded

Qt XML 模块

工具

QDoc 文档生成器

  • QDoc 现在可接受宏参数中的格式化命令。
  • 作者现在可以通过auto 重写用fn-command 文档化的函数的底层返回类型。
  • QDoc 现在可以从 C++ 头文件中的注释生成文档。这是作为 Qt 6.9 的技术预览版添加到 QDoc 中的,我们希望得到用户的反馈。启用documentationinheadersQDoc 配置变量即可试用。
  • 使用新的qmlenumeratorsfrom命令,可从 C++ 枚举生成 QML 枚举文档。
  • 生成列表(generatelist)和注释列表(annotatedlist)命令现在支持生成列表的自定义排序顺序。
  • deprecated接受未来版本,QDoc 在识别到未来版本时会生成适当的文本。
  • Clang 库要求:QDoc 需要 LLVM 17 的 Clang 库。经确认,它还能与 LLVM 18、19 和 20 版本的 Clang 库协同工作。
  • QDoc 现在支持使用cmakecomponentcmakepackagecmaketargetitem命令调整第三方项目的 CMake 要求。
  • 与示例相关的警告现在可通过新的examples.warnaboutmissingimagesexamples.warnaboutmissingprojectfiles配置变量进行配置。
  • QDoc 现在可以为文档中的图片生成工具提示。新的usealttextastitle配置变量的文档介绍了如何为您的项目启用该功能。

平台变更

构建系统变更

  • 构建 Qt 和在 CMake 项目中使用 Qt 现在需要 CMake 3.22 或更高版本。

桌面平台

视窗

  • 已添加对其他表情符号字体格式(如 CBDT 和 COLRv1)的渲染支持。

Linux 上的 Wayland 客户端

  • 添加了对新的xdg-toplevel-icon-v1 协议的支持,如果合成器也支持该协议,则QWindow::setIcon() 可正常工作。
  • 窗口的底层wl_surface 现在共享其生命周期,在窗口隐藏时不再被销毁。

移动平台

安卓

  • 支持 APK 中未压缩的本地库,不再需要packagingOptions.jniLibs.useLegacyPackaging true
  • 引入qt_add_android_permission() CMake 函数。
  • 增加QT_ANDROID_COMPILE_SDK_VERSIONCMake 属性,用于设置构建 Java 代码的 SDK 级别。
  • 增加QT_ANDROID_APP_ICONCMake 属性,以设置应用程序的图标。
  • 添加QT_ANDROID_APP_NAMECMake 属性,以设置应用程序的名称。
  • 针对 31+ 级 API 将位置和蓝牙权限分离。
  • 允许为排队的后台 UI 事件设置最大值。
  • 添加脚本以轻松部署、运行应用程序并从终端获取日志。
  • Qt Quick 针对 AndroidQtQuickView
    • QtAbstractItemModel 添加 setData() 和 dataChanged() 方法。
    • 添加 OnDataChangedListerner 回调接口。
    • QtQuickViewContent:添加传递底层 QtQuickViewContent 对象的 onStatusChanged() 重载。
    • 支持来自 Android 服务的多个嵌入式视图。

嵌入式平台

Boot to Qt

实时操作系统

  • 实时操作系统支持仅适用于 LTS 版本。对于非 LTS 版本,仅通过专业服务提供支持。

API 更改列表

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