Qt 6.6 的新功能
Qt 6.6 中的新增和恢复模块
Qt 6.6 新增了以下模块和工具:
技术预览版中的新增和恢复的模块
注意: 不保证API 和 ABI 的稳定性。
Qt Graphs 模块
Qt Graphs 旨在取代Qt Data Visualization 。它采用Qt Quick 3D 作为渲染引擎,以支持原生图形后端,而非像Qt Data Visualization 那样依赖 OpenGL 2.1。
该模块将提供Qt Data Visualization 的大部分(甚至全部)功能。在技术预览版中,某些高级功能可能尚不完善。
Qt 6.6 的新功能
Qt Core 模块
- 新增了Q_NODISCARD_CTOR 宏,用于将构造函数标记为 nodiscard。在支持该宏的编译器上,该宏将解析为
[[nodiscard]];在其他编译器上则不产生任何效果。 - 为以下 Qt 容器添加了
assign()重载:QVarLengthArray 、QList 、QByteArray 以及QString 。这些函数提供了一种便捷的方式,可在复用现有capacity()的同时为容器赋予新数据。 - 您可以通过在 CMakeLists.txt 中指定 QT_DISCARD_FILE_CONTENTS 源文件属性,省略添加到资源文件系统中的任何文件的内容。文件节点将被保留。在手动编写
.qrc文件时,您可以通过将fileXML 节点的empty属性设置为true来实现相同的效果。 - QFileInfo 新增了readSymLink()成员函数,该函数返回原始路径;此外,与时间戳相关的函数还新增了接受QTimeZone 参数的重载版本。
- QProcess::UnixProcessParameters 结构体和QProcess::UnixProcessFlag 枚举可在新的QProcess::setUnixProcessParameters() 成员函数中使用,以修改子进程的 Unix 特定设置和参数,例如关闭多余的文件描述符。
- 新的QNativeIpcKey 类保存了一个由QSharedMemory 和QSystemSemaphore 使用的原生密钥,为 Apple 平台上的沙箱应用程序提供了更好的支持。有关更多信息,请参阅“原生 IPC 密钥”。
- 大多数涉及时间区间的 Qt API 已移植到
std::chrono中的相关数据类型。 - QXmlStreamReader::hasStandaloneDeclaration() 返回文档是否具有显式的独立声明。
Qt GRPC 模块
- 新增了QGrpcChannelOptions 和QGrpcCallOptions 。这些是向通道和调用传递选项的新方法。
- 添加了 QGrpcMetadata,用于向调用传递额外的元数据。
- 为自动生成的 QtGRPC 类集成了对 QML 类型的支持。
Qt GUI 模块
- 新增了 QFont::setFeatures(),用于直接访问字体中的 OpenType 特性。
- QPalette 现在有一个accent() 颜色条目,默认使用系统的强调色。
- QRhi 类家族现已全面文档化,并作为具有有限兼容性承诺的API提供。 Qt 渲染硬件接口是一个 3D 图形 API 和着色语言抽象层,Qt Quick 和Qt Quick 3D 等模块使用它来实现跨平台、可移植的渲染引擎和材质系统,这些引擎和系统可以在 Direct 3D 11/12、Vulkan、Metal、OpenGL 和 OpenGL ES 上运行。 希望执行自有低级渲染,同时又不直接依赖可能具有平台特异性的 3D API 和着色语言的应用程序,现在可以使用QRhi 及其相关类来增强Qt Quick 场景、渲染到QWindow 、执行离屏渲染到纹理中,或分发 GPU 计算工作负载。 在之前的 Qt 6 版本中,QRhi 类是完全私有的,且其文档并未作为标准 Qt 文档集的一部分提供。 现在,它们的处理方式与 QPA(QPlatform*)类类似,这意味着它们构成了一组特殊的类:虽然不提供公共 Qt API 所具备的所有标准模式及源代码/二进制兼容性保证,但中级/高级应用程序开发人员仍可使用它们。QRhi API 的文档现已成为标准 Qt 文档的一部分。此外还引入了rhiwindow 示例。
- 为QRhi 添加了 Direct 3D 12 后端。这目前不会影响任何应用程序,因为Qt Quick 和QQuickWidget 在 Windows 上的默认后端选择仍然是 Direct 3D 11,预计在可预见的未来也不会改变。 新的 D3D12 后端目前应被视为实验性功能,主要适用于需要让 Qt 通过 Direct 3D 12 进行渲染的应用程序,以便简化与应用程序自身或某些外部组件中需要 D3D12 的渲染或计算引擎的互操作。
- Qt 6 应用程序现在可以通过新的 `QUtiMimeConverter `(适用于 macOS)和 `QWindowsMimeConverter `(适用于 Windows)类来支持自定义或平台特定的剪贴板格式。这些类是 Qt 5 中 `QMacPasteboardMime` 和 `QWindowsMime` 类型的统一版本。有关如何调整现有实现的帮助,请参阅移植指南。
- QTextListFormat::setStart() 允许文本列表从 1 以外的索引开始。
Qt Location 模块
- 地图项现在渲染得更准确了,包括那些环绕地球或包含孔洞的地图项。
- 地图项现在可以使用不同的参考表面进行渲染。QLocation::ReferenceSurface 枚举提供了
Map和Globe选项,可与项类型的referenceSurface 属性配合使用,以控制项是在平面地图上渲染,还是遵循地球的曲率。 - 按住 Shift 键时,滚动鼠标滚轮可更改“bearing ”设置;按住 Ctrl 键时,滚动鼠标滚轮可更改“tilt ”设置。
Qt Multimedia 模块
- Qt Multimedia 库不再请求音频或视频权限,而仅检查这些权限是否已授予。客户端应用程序必须使用C++ 或QML权限 API 来请求这些权限。
- 新的QWindowCapture 类新增了对在QMediaCaptureSession 内捕获单个桌面应用程序窗口视频的支持。录制的视频可输出到任何类型的视频输出设备,例如QMediaRecorder 或QVideoWidget 。窗口捕获仅在FFmpeg后端下受支持。
- QMediaRecorder 已扩展了相关属性,以便更好地控制视频质量、分辨率和比特率。
Qt PDF 模块
- 新的QPdfLinkModel 类提供了指定页面上的链接几何信息和目标位置。
- QPdfDocument::pageModel() 实现了Qt::DecorationRole ,用于按需渲染页面缩略图。
- 新的QPdfPageSelector 类是一个专门的QSpinBox ,用于在基于小部件的 PDF 查看器中选择页面。
Qt Positioning 模块
Qt Protobuf 模块
- 作为 *.proto 模式的一部分,支持使用特定的Qt Core 和Qt GUI 类型。
- 为自动生成的QProtobufMessage 类集成了QML类型支持。
- 已迁移至自动生成的QProtobufMessage 类的隐式共享数据。这允许从 QML 上下文中按值访问消息类型,而无需进行大量复制。
- 为google.protobuf.Any类型添加了对Qt Protobuf 已知类型的支持。
- 集成了对oneof类型的支持,这是一种类似联合类型的 protobuf 类型,其成员不必须包含值。
Qt Bluetooth 模块
- Qt Bluetooth 库不再请求蓝牙权限,仅检查权限是否已授予。客户端应用程序必须通过C++ 或QML权限API来请求权限。
- Qt 现在提供了一个名为 quint128 的原生 128 位无符号整数类型。在支持该类型的平台上,QBluetoothUuid (quint128)构造函数和QBluetoothUuid::toUInt128() 方法现在使用该类型,而不是早期 Qt 版本中使用的自定义结构体。 只要您的代码将 quint128 视为不透明类型,此更改在源代码和二进制层面均兼容;但若遇到任何问题,请考虑使用接受QUuid::Id128Bytes 参数的新重载。不支持 128 位整数类型的平台(如 MSVC)仍使用来自Qt Bluetooth 的自定义结构体。
Qt Qml 模块
- 新增了通过 QML 管理应用程序权限的支持。该 Qt Qml Core 该模块通过一组权限类型向 QML 公开了 Qt C++应用程序权限功能,这些类型可用于以跨平台的方式检查或请求权限。有关更多信息,请参阅QML 应用程序权限。
- XMLHttpRequest 对象现已更新,新增了两项功能,以使其更贴近现代浏览器。 新增了responseURL属性,可用于确认是否发生过重定向。同样,新增了overrideMimeType()方法,可用于让 XMLHttpRequest 对象根据特定的 MIME 类型(而非响应中 Content-Type 标头的内容)来解析响应。
- QML Language Server现已初步支持“转到定义”和“查找用法”功能,同时还支持完整的文档格式化。
- 现在可以通过插件扩展 qmllint。该插件 API 目前处于技术预览阶段。
Qt Quick 模块
- 新增了font.features 属性,用于直接访问字体中的OpenType特性。
- TableView 具有selectionMode 属性,用于控制是否可以选中单个或多个单元格。
- TreeView 具有rootIndex 属性,用于仅显示模型中的子树。
- AnimatedImage 现在支持sourceSize 属性。
- 环境变量
QT_QUICK_FLICKABLE_WHEEL_DECELERATION允许您自定义使用“点击式”滚轮鼠标滚动后的减速效果。 默认情况下,加速度现已关闭,因此滚动距离与“点击”次数成正比(除非平台提供自己的加速度);但您可以设置小于 15000 的值来恢复旧的行为。flickDeceleration 属性现在仅适用于触摸轻扫。 - 大多数属性现已被标记为 FINAL,这意味着无法再通过声明同名新属性来覆盖它们。如果某个
FINAL属性被覆盖,系统将发出警告。我们建议用户重命名此类属性,以避免行为发生意外变化。 - 在QQuickWindow 、QQuickRenderControl 和QSGTexture 中添加并公开了若干与QRhi 相关的函数。查询屏幕内或屏幕外Qt Quick 渲染所使用的QRhi 、QRhiSwapChain 或QRhiCommandBuffer 现已简化。一些此前因依赖QRhi*类而在文档中隐藏的函数现已公开。在QQuickWindow 中添加了createTextureFromRhiTexture(),作为createTextureFromImage()的对应函数。
- 更新了场景图示例:添加了rhiunderqml,用新的、可移植的rhitextureitem 示例替换了旧的、仅支持 OpenGL 的 fboitem 示例,并更新了customrendernode 示例。 这些示例共同展示了三种通过自定义低级 2D/3D 渲染来扩展Qt Quick 场景的方法(这三种方法分别是:底层/叠加层、基于渲染到纹理的自定义项,以及使用QSGRenderNode 的自定义项)。
- 新增了 Path::simplified 属性,用于在渲染路径前自动对其进行简化。这与QPainterPath::simplified() 函数的功能一致。
- 新增了对收集QQuickWindow 渲染过程中 GPU 时间戳的支持。当通过QQuickGraphicsConfiguration 的setTimestamps() 或相应的环境变量启用此功能时,GPU 侧的时间数据将出现在启用
qt.scenegraph.time.renderloop等日志类别时输出的调试信息中,以及Qt Quick 3D 的DebugView 项中,与 CPU 侧的时间数据相辅相成。 目前,此功能在 Direct 3D 11、Metal 和 Vulkan 上均受支持(前提是底层 Vulkan 实现支持时间戳查询)。对其余 3D API 的支持将在未来版本中引入。
Qt Quick Controls 模块
- 在SpinBox 中添加了live 属性。该属性控制当用户编辑displayText 时,value 是否进行更新。
- 在 Dial 上添加了wrapped 信号。当刻度盘发生循环(即从最大值超出至最小值,或反之)时,会触发此信号。
- 在 Dial 中添加了startAngle 和endAngle 属性。这些属性以度为单位控制旋钮的起始角和结束角。
Qt Quick Layouts 模块
- 新增了LayoutItemProxy ,这是一个用于编写响应式布局的辅助控件(处于技术预览阶段)
- 为每种布局类型添加了适用的uniformCellSizes 、uniformCellSizes 、uniformCellWidths 和uniformCellHeights 属性(处于技术预览阶段)
- StackLayout 现在,如果项目在小于或等于当前索引的位置被插入或移除,系统将更新currentIndex 。
Qt Quick 图形模块
- 新增了实验性的曲线渲染后端,其渲染质量高于默认几何渲染器,且无需使用 MSAA 即可应用抗锯齿效果。可通过Shape::preferredRendererType 属性进行选择。
Qt Quick 3D 模块
- 新增了一个用于程序化创建TextureData 的QML API,名为ProceduralTextureData 。此前,这只能通过C++继承QQuick3DTextureData 来实现。
- 新增了一个名为ProceduralMesh 的 QML API,用于过程化地创建网格几何体。此前,这只能通过 C++ 继承QQuick3DGeometry 类来实现。
- 现在可以导入 PLY 文件了。
- 新增了通过QQuick3DTextureData 创建 3D 纹理的支持。
- 新增了对渲染器扩展(Renderer Extensions)的初步支持。这是允许添加额外渲染通道并支持自定义内置渲染通道的第一步。View3D 新增了一个名为 extensions 的属性,该属性接受一个QQuick3DRenderExtension 子类的数组。此功能通过QQuick3DExtensionHelpers 中的辅助函数进一步实现。
Qt SQL 模块
- 新增了一个Mimer SQL插件
- MySQL/MariaDB 新增了连接选项 MYSQL_OPT_PROTOCOL、MYSQL_SHARED_MEMORY_BASE_NAME、MYSQL_OPT_TLS_VERSION 和 MYSQL_OPT_SSL_MODE
- ODBC 插件现在会返回所有原生错误代码,详见QSqlError
- QSqlQuery 新增了两个函数 boundValueName()/boundValueNames()
Qt TextToSpeech 模块
QTextToSpeech 类新增了若干功能,这些功能适用于所有引擎:
- 应用程序可以通过enqueue 向合成引擎添加多段文本。
- 新的aboutToSynthesize 信号会在文本片段被合成之前触发。
- 现在,通过findVoices 成员函数,可以轻松地根据一组标准从引擎提供的声音中选择一种。此外,QML代码还可以将VoiceSelector 类型用作附加属性。
并非所有引擎都支持所有新功能。应用程序可以使用新的 `Capabilities ` 标志和 `engineCapabilities ` 属性来检查当前使用的引擎支持以下哪些新功能:
- 如果引擎具备Synthesize 功能,QTextToSpeech 现可将文本合成到 PCM 数据中。synthesize 函数可与一个可调用对象配合使用,该对象在 PCM 数据合成完成后会接收数据块。
- 如果引擎具备WordByWordProgress 功能,当当前文本块中的每个单词被朗读时,QTextToSpeech 会发出sayingWord 信号。
Qt WebEngine 模块
- 向 `QWebEngineLoadingInfo` 添加了响应头。
- 现在可以在QWebEngineUrlRequestJob 中添加额外的响应头。
- 添加了QWebEngineUrlScheme::FetchApiAllowed 标志,用于为自定义 URL 方案启用 HTML5 Fetch API。
- qWebEngineGetDomainAndRegistry() 函数,用于读取 Chromium/QtWebEngine 所识别的有效顶级域名。
- 添加了 QWebEngineSettings::DisableReadingFromCanvas 设置,用于禁用画布读取,以提供额外的指纹识别防护。
Qt Widgets 模块
- QWidget 新增了一个 setTabOrder() 重载方法,该方法接受一个初始化列表,允许通过一次调用设置整个链。
- QMessageBox::Option 提供了针对每个消息框控制是否应使用原生消息框的方法。
平台变更
桌面平台
macOS
- 现在,构建用户项目或 Qt for macOS 本身至少需要 CMake 3.21.1 版本。
- QMessageBox::setCheckBox现在,在使用原生消息框时,会尊重 () 的设置。
- QFileDialog 不再无谓地触发权限对话框。
移动平台
Android
- 在使用 `QDesktopServices::openUrl()` 时,增加了对 `FileProvider` 的支持。
- 默认添加了 AndroidX(FileProvider 的依赖项)。
- 针对 Android 特定的目标属性引入了QTP0002CMake 策略。
- 更新了 Android 支持的示例列表。
- Android 13 作为支持的最高版本
- 将 Gradle 更新至 8.3.0 版本。
- QFileDialog 将所有提供的名称过滤器都纳入考虑范围,而不仅仅是所选的那个。
- 将 Android 目标 SDK 级别更新为 33,以符合 2023 年 Play 商店的要求。
iOS
- 新增对 `QWindow::setMask()` 的支持,用于屏蔽渲染和输入。
- 增加了对外部窗口的支持,可将 UIView 嵌入到 QWindows 中。
嵌入式平台
Boot to Qt
- 新增了对 Yocto 4.2(mickledore)的支持。
- 目标硬件的支持级别已更新,新增了以下支持的开发板:
- 新增对NXP i.MX 93 开发板的一级支持。
- 新增对xml-ph-0000@deepl.internal i.MX 93开发板的一级支持。
- 新增对NXP i.MX 8QuadXPlus 开发板的三级支持。
- 新增对 Toradex Apalis iMX8 开发板的三级支持。
- Toradex 和 ST 目标平台现已采用最新的 Yocto LTS 版本(kirkstone)。
© 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.