Qt 6.5 中的新功能
Qt 6.5 中新增和恢复的模块
Qt 6.5 新增了以下模块和工具:
- Qt Quick Effect Maker- 一个用于为Qt Quick 创建高性能 Shader 效果的工具。
- Qt Quick Effects- 一个包含MultiEffect 的模块,用于在Qt Quick Item 上应用一种或多种简单的 Graphical Effects。
- Qt Quick 3D 物理- 用于 的物理引擎。该模块不再处于技术预览阶段。Qt Quick 3D
- Qt Qml Core- 向 QML 公开各种 API 的模块。 Qt CoreAPI 的模块。
技术预览版中的新模块和恢复模块
注意: 不保证 API 和 ABI 的稳定性。
- Qt LocationMap Qt Quick MapView 包括Qt Quick 输入处理程序,用于实现典型的交互功能(缩放、平移、倾斜)。
- Qt GRPC支持使用根据 protobuf .proto-specifications 中的服务描述生成的类与 gRPC 服务通信。
- Qt Protobuf支持根据 protobuf .proto-specifications 生成基于 Qt 的类并对其进行序列化和反序列化。
Qt 6.5 中的新功能
Qt Core 模块
- QTimeZone 现在可在轻量级时间表示中打包 和偏移量(如相关),该表示统一了使用 或 和偏移量的 和 的各种 API。Qt::TimeSpec QTimeZone Qt::TimeSpec QDateTime QDate
- 引入应用程序权限API,允许应用程序检查或请求使用前需要用户同意的功能的权限。
- 采用通用跟踪格式 (CTF) 的新跨平台跟踪后端。
- QBindable 现在,您可以从带有 NOTIFY 信号的任何属性中构建 "NOTIFY"。这让你可以将现有的不可绑定属性与可绑定属性整合在一起。
- 现在,qt_generate_deploy_app_scriptCMake 函数最好能接受一个名为 OUTPUT_SCRIPT 的参数。传递旧的 FILENAME_VARIABLE 已被弃用。
Qt GUI 模块
- 重新引入了QWindowsMimeConverter 和QUtiMimeConverter 类,用于在 Windows、macOS 和 iOS 上以特定平台格式处理拖放和剪贴板数据。
- QVulkanInstance 现在默认启用 Vulkan Portability 物理设备。要在苹果平台上使用较新版本的 MoltenVK,必须启用此功能。新增了 NoPortabilityDrivers 标记,让你可以选择退出。
- Vulkan 渲染基础架构现在使用 VK_EXT_debug_utils,而非过时的 VK_EXT_debug_report 和 VK_EXT_debug_marker。
- QTextLayout::glyphRuns() 现在可以在请求时返回每个字形对应的字符串索引。通过新函数QGlyphRun::stringIndexes() 提供。
- 复选框列表项现在可以用 HTML 和 Markdown 读写,包括转换。
- 添加了QGuiApplication::setBadgeNumber() 以向用户反馈未读信息或类似信息的数量。徽章将覆盖 macOS Dock、iOS 主屏幕图标或 Windows 任务栏中的应用程序图标。
Qt Quick 模块
- TableView 支持使用编辑委托编辑单元格。
- TableView 支持使用鼠标调整行和列的大小。
- TableView 支持显式设置行和列的大小。
- TableView 新增信号 。例如,该信号可用于重新定位覆盖项。
layoutChanged()
- TableView 支持多选。
- 为在QSGMaterial 中指定单独的 RGB 和 alpha 混合因子添加了支持。
- Qt Quick 场景图现在会自动使用基于磁盘的图形管道或中间格式着色器字节码的持久缓存,具体取决于平台和使用的 3D 图形 API。预计这将减少应用程序后续运行中创建图形管道所花费的时间。此外,QQuickGraphicsConfiguration 还能明确控制这些数据是否写出以及从哪里写出和加载。这使得高级用例成为可能,例如将预置缓存文件与应用程序或设备一起发送,这也加快了首次启动的速度。
- PinchHandler 新的 和 组属性提供了几个新值,包括 属性,这是所有处理程序轴组的新属性。它还获得了 已有的 和 属性。scaleAxis rotationAxis
activeValue
DragHandler activeTranslation persistentTranslation - DragHandler
xAxis
和 具有新的 属性。yAxis
activeValue - PinchHandler activeScale (以前称为 )不再受 和 之间范围的限制:这些限制只适用于 。同样, (以前为 )也不再局限于 和 之间的范围。这些限制的应用方式与本地触摸板捏合手势在触摸屏上的应用方式相同。
scale
minimumScale maximumScale persistentScale activeRotationrotation
minimumRotation maximumRotation - TapHandler::exclusiveSignals 现在,您可以让 和 信号独占。singleTapped doubleTapped
Qt Labs 动画模块
- BoundaryRule 现在有了 信号。returnedToBounds
Qt Quick Controls 模块
- TreeViewDelegate 支持编辑树节点
- 材质样式更新为Material 3。
- 多个控件获得了视觉更新,因此建议检查应用程序的外观并进行相应调整:
- 添加了一些新的 API:
- Material.containerStyle控制目标控件使用的容器样式。它可以附加到任何窗口或项目,但默认情况下只有TextField 和TextArea 支持。
- Material.roundedScale控制目标控件使用的圆角半径。它可以附加到任何窗口或项目,但默认情况下只有以下控件支持它:
- iOS 风格已完成
Qt Test 模块
- 添加了QTest::currentTestResolved() ,如果测试失败或跳过,则返回 true。它可以取代QTest::currentTestFailed() 作为辅助函数返回时的测试条件。
- QTest::mouseRelease() 和mouseClick() 现在可用于测试双击,方法是指定一个实际的时间戳延迟,以防需要检查事件之间的中间状态。mouseDClick否则 () 仍然更方便。
Qt Widgets 模块
- QKeySequenceEdit 获得了两个新属性: 允许应用程序控制按键序列的长度。 定义了结束录制的按键组合。maximumSequenceLength finishingKeyCombinations
- 为QOpenGLWidget 添加了立体渲染支持,也适用于由QOpenGLWidget 视口支持的任何QGraphicsView 。与QOpenGLWindow 或 Qt 5 和 4 中现已移除的 QGLWidget 不同,QOpenGLWidget 需要明确的支持与到位的支持 API,因为在这种情况下应用程序不会直接渲染到本地窗口,因此无法像QOpenGLWindow 那样控制活动绘制缓冲区。
Qt Positioning 模块
- 引入SatelliteSource - 用于QGeoSatelliteInfoSource 的 QML API。
Qt Serial Bus 模块
- 引入QCanSignalDescription 、QCanMessageDescription 和QCanUniqueIdDescription 类。这些类用于提供一套编码或解码 CAN 总线报文的规则。
- 引入QCanFrameProcessor 类。该类可用于将接收到的QCanBusFrame 解码为键值对映射,并将键值对映射组成QCanBusFrame 。
- 引入QCanDbcFileParser 类。该类用于解析 DBC 文件并生成消息描述,随后可用于QCanFrameProcessor 。
所有新类都是试验性的,可能会有变化。
Qt Network 模块
- 引入QHttp1Configuration 。该类可用于配置使用 HTTP 1 时每台主机使用的最大连接数(默认值:6)。
- QNetworkRequest 在 Qt for WebAssembly 上获得了 UseCredentialsAttribute 属性,为底层 启用了 withCredentials。XMLHttpRequest
Qt QML 模块
- 为QQmlApplicationEngine 和QQmlComponent 添加了 API,以便通过模块 URI 和类型名称加载/创建 QML 元素。与基于 URL 的函数不同,这也适用于 C++ 类型和内联组件。
- QQmlListProperty 属性(properties)现在的行为更像数组,支持 map()、reduce() 和 forEach() 等方法。其他序列类型也是如此,如 <int> 和类似类型。QList
- 扩展了qmltc以支持更多的 QML 结构,特别是翻译绑定、内联组件、单子和 C++ 定义信号的信号处理器。
- QML 脚本编译器可以处理更多的构造。尤其是
- console.log() 和
let
和const
- qsTr() 和
- 字符串的 arg()
- 所有剩余的位运算符和移位运算符
- 指数运算符
- 使用新的环境变量
QML_DISK_CACHE
可以更精细地控制QML 磁盘缓存。 - 新增了公共 CMake API:
- 引入Qt CMake 策略,为资源前缀设置更好的默认值。如果将QTP0001策略设置为
NEW
,QML 引擎将始终能够在资源文件系统中找到您的 QML 模块。
- 引入Qt CMake 策略,为资源前缀设置更好的默认值。如果将QTP0001策略设置为
- 现在,qt_generate_deploy_qml_app_scriptCMake 函数最好接受一个名为 OUTPUT_SCRIPT 的参数。传递旧的 FILENAME_VARIABLE 已被弃用。
Qt Quick 3D 模块
- 为模型添加了自动细节级别 (LOD) 支持。这允许在导入资产时生成简化版本的网格,然后在渲染时自动选择适当的层次。
- 已添加显式细节级别(LOD)支持,可根据摄像机距离控制模型的不透明度。
- 添加了ExtendedSceneEnvironment ,内置景深、调色、发光、渐晕、镜头耀斑等效果。这些特效是一起执行的,与单个独立的后期处理特效(每个特效需要一个或多个渲染通道)相比,效率更高。
- 增强了DebugView ,其中包含渲染统计信息、活动网格和纹理资产列表、实时渲染传递信息,以及用于交互式切换设置的控件,如线框模式和材质覆盖,可从DebugSettings 获取。
- 已添加DebugSettings ,可通过SceneEnvironment 获取,允许对线框模式和材质覆盖等设置进行编程控制,以便只渲染基于物理材质的某些方面。
- 添加了InfiniteGrid ,在水平面上实现了带淡出功能的无限网格。
- 添加了内置的简单雾化支持,可通过SceneEnvironment 获取。启用后,在渲染场景中的模型时会应用深度或高度雾化效果。
- 改进了使用实例渲染时的拾取功能。
- 添加了顶点颜色支持,可用于PrincipledMaterial 和SpecularGlossyMaterial
- 反射探针:添加了对使用提供的立方体贴图而非渲染场景的支持。
- 增强了后处理效果,以便在运行时对着色器源文件 URI 的变化做出正确反应。
- 为运行时生成的材质着色器数据添加了基于磁盘的持久缓存。预计这将缩短应用程序启动和视图更改时间。
Qt WebView 模块
- 添加了WebViewSettings ,用于配置WebView 的部分常用功能。
Qt Multimedia 模块
- 6.4 中的技术预览版 ffmpeg 媒体后端已成为 macOS、Windows、Android 和 Linux(Yocto 发行版除外)的默认后端。本地后端仍可使用,但支持有限。
- 引入QScreenCapture 类,这是一种新的视频输入类型。可将QScreenCapture 至QMediaCaptureSession 的视频直接输出到QMediaRecorder 或QVideoWidget 等输出端。屏幕捕捉功能仅适用于 ffmpeg 媒体后端。
平台变更
网络组装
- 在Qt Online Installer 中添加了启用多线程的二进制包。
- 添加了对文件系统访问API 的支持。如果浏览器支持,QFileDialog::getOpenFileContent() 和QFileDialog::saveFileContent() 等文件对话框调用现在将使用此 API。
- 已添加对本地字体访问API 的支持。Qt 现在将在支持此 API 的浏览器上使用本地字体。
- 为Qt Multimedia 添加了视频播放技术预览和摄像头支持。
- 为 WebAssembly SIMD 添加了配置选项:-feature-wasm-simd128。
- 为 WebAssembly 异常添加了配置选项:-feature-wasm-exceptions
- 发布了Qt Web Utils的实用功能和 Qt 在 Web 上的使用示例。
- QTest WebAssembly 现在默认使用 emrun。WebAssembly 专用脚本驱动自动测试的执行。
桌面平台
视窗平台
- 可以设置环境变量 QT_WIN_DEBUG_CONSOLE,以便在控制台窗口中查看从命令行启动的 GUI 应用程序的 stdout/stderr 消息。将其设置为
new
或attach
。
macOS
- 为QMessageBox 和QErrorMessage 添加了本地后端。
Linux 上的 Wayland 客户端
- 现在支持用于合成器的 fractional_scale_v1 协议,该协议可为客户端建议分数比例因子。
移动平台
安卓
- 将 Gradle 更新至 8.0,将 Android Gradle Plugin (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 Scoped Storage 下对QStandardPaths 进行修复和文档更新。
- 从 Qt 而非 Android 系统打印 Qt JNI 异常。
- 修复了对 APK 签名方案 v2 的支持。
iOS
- 为QColorDialog 和QFontDialog 添加了本地实现。
嵌入式平台
Boot to Qt
- Boot to Qt 栈更新为使用 yocto 4.1.2 (langdale)。
- 支持 macOS 主机使用基于 Docker 的工具链。
- 更新了目标硬件的支持级别,现在有多个级别的支持适用于特定的硬件和操作系统组合。
API 更改列表
这些页面概述了 Qt 6.5 中的 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.