Qt 6.10 的新功能
Qt 6.10 中的新增和恢复模块
Qt 6.10 新增了以下模块和工具:
Qt 6.10 的新功能
Qt Core 模块
- QLocale 现已更新至 CLDR v47
- QLocale::uiLanguages() 现包含截断条目,且排序更合理
- QLocale::toString() 针对整数类型的重载现在支持精度和宽度
- 在qDebug()的输出中,系统区域设置现可与同一语言、字符集和地区下由CLDR派生的区域设置区分开来
- QLocale::toString(double, ...) 的指数分隔符现已再次与请求的大小写形式匹配
- QCalendar::daysInMonth() 对于未指定的年份,现在返回最大值
- 新的QRangeModel 类提供了一种QAbstractItemModel 的实现,该实现可对任何 C++ 范围进行操作。
- QXmlStreamReader::readRawInnerData() 用于检索元素的原始内部 XML 内容。
- QXmlStreamWriter 的错误处理 API,包含Error 枚举、error()、errorString() 和raiseError() 函数。
- QXmlStreamWriter::stopWritingOnError() 属性,允许用户控制在遇到错误后输出是否立即停止。
- 新增了QFuture::cancelChain() 函数,用于利用链中任何未完成的QFuture 来取消整个延续链。
- 新的qEnvironmentVariableIntegerValue 函数返回环境变量的数值;如果该变量未设置或不包含整数,则返回
std::nullopt。 - QFileInfo::isOther() 对于既不是目录、普通文件也不是符号链接的文件系统条目,返回 true。
- 新增了接受Direction 参数的QSortFilterProxyModel::endFilterChange(),以平衡之前对endFilterChange()的调用。这些API取代了invalidateFilter(),后者将从Qt 6.13开始被弃用。
- QMetaObject::connect() 的两个新重载使信号的QMetaMethod 能够连接到槽函数或 lambda 表达式。
- QCborValue::toStringView() 和QJsonValue::toStringView() 返回 value 中存储的字符串的视图,无需任何内存分配。
- 使用QDataStream::operator bool() 和QTextStream::operator bool() 检查流是否处于错误状态。
- 使用nullTerminate() 向QByteArray 或QString 添加空终止符,例如在通过QByteArray::fromRawData() 构造它们之后。使用nullTerminated() 测试数组或字符串是否以空字符结尾。
- QByteArray 现在可以隐式转换为std::string_view 。
Qt D-Bus 模块
- QDBusConnectionInterface::serviceCredentials() 返回当前持有指定总线服务的进程的连接凭据。
Qt Graphs 模块
- 添加了填充面图形类型:DrawFilledSurface
- 为 2D 坐标轴添加了文本省略支持:QAbstractAxis::textElideMode
- 新增对小尺寸扇区隐藏标签的支持:QPieSeries::angleSpanVisibleLimit ,QPieSeries::angleSpanLabelVisibility ,QPieSeries::LabelVisibility
- 为 2D 图表添加了多轴支持:QAbstractSeries::axisX ,QAbstractSeries::axisY
- 为 2D 数据系列添加了悬停支持:QAbstractSeries::isHovered
- 新增对 2D 图表中绘图区域裁剪的控制支持:clipPlotArea
- 新增对 LineSeries 中数据点坐标的查询支持:QLineSeries::dataPointCoordinatesAt
- 在 Bars3D 和 Surface3D 中添加了将切片渲染为图像的功能:Q3DBarsWidgetItem::renderSliceToImage ,Q3DSurfaceWidgetItem::renderSliceToImage ,QtGraphs3D::SliceCaptureType
- 新增Bars3DNode 、Scatter3DNode 和Surface3DNode ,用于在 View3Ds 内的QtQuick3D 应用程序中添加 3D 图表
- 新增了对 2D 图形绘制顺序的支持:QAbstractSeries::zValue
- 新增分类日志记录支持
Qt GRPC 模块
- 针对QGrpcHttp2Channel 进行了性能优化和错误修复。请在此处阅读博客文章。
- 将
unix-abstractTransportation scheme 添加至QGrpcHttp2Channel 。 - 在QGrpcOperation 中添加了serverInitialMetadata 和serverTrailingMetadata 接口。
- 添加了QGrpcCallOptions::filterServerMetadata 和QGrpcChannelOptions::filterServerMetadata 选项,用于控制接收到的服务器元数据的过滤。
- 新增了QGrpcCallOptions::addMetadata 和QGrpcChannelOptions::addMetadata 以支持客户端元数据的增量更新。
- 已弃用metadata 接口,转而采用基于QMultiHash 的接口:metadata (QtGrpc::MultiValue)、setMetadata (QMultiHash)。
Qt GUI 模块
- QStyleHints::accessibility 模块提供对用户辅助功能首选项的访问,例如系统是否已启用提高对比度的设置。
- 添加了QAccessibilityHints 用于访问各个辅助功能设置。
- QRhi:在 Direct 3D 11、12 或 Vulkan 上运行时,通过enumerateAdapters() 函数增加了对枚举 3D 图形适配器(物理设备)的支持。
- QPainterPath::setCachingEnabled() 可用于开启计算值的缓存,以牺牲额外的内存使用为代价,提高某些操作的性能。
- 新增了QPainterPath::trimmed(),用于返回路径的一部分。
Qt HttpServer 模块
- 在QHttpServerConfiguration 中添加了子网白名单和黑名单。
- 在QHttpServerConfiguration 中添加了可配置的 keep-alive 超时。
- 使QHttpServerRequest 可复制。
Qt Lottie Animation
- 增加了对实色、空色和预合成图层的支持。
- 新增lottietoqml工具。该工具与svgtoqml功能等同,可将 Lottie 文件转换为 QML 描述的Qt Quick 场景。目前处于技术预览阶段。
- 为VectorImage 添加了一个插件,使其除了支持 SVG 之外还能加载 Lottie 文件。此功能处于技术预览阶段,需要将assumeTrustedSource 设置为
true。 - 新增了lottietoqml 示例和qtlottieviewer 示例,用于演示 Qt Lottie Animation。
Qt Multimedia 模块
- 添加了原生的 PipeWire 音频后端。
- 基于 FFmpeg 的QMediaPlayer 实现了音高补偿功能,该功能基于出色的Signalsmith Stretch 库。可通过pitchCompensation 属性自定义其行为。
- QCapturableWindow 现在可以在 C++ 和 QML 中从 `QWindow ` 构建 ` `。
- 新增了QPlaybackOptions 类,允许用户控制低级 FFmpeg 媒体播放选项,例如播放意图、网络超时和探测大小。
- 在 `QAudioSink ` 和 `QAudioSource` 中,添加了允许用户以帧数(而非字节数)为单位操作底层音频缓冲区的方法。
Qt Network 模块
- 在QSslCertificate 中添加了 fromFile() 方法。
- 在QHttpHeaders 中添加了 setDateTimeValue(),这是一个用于设置 HTTP 头中日期和时间值的便捷方法。
- 在QHttpHeaders 中添加了便利方法,用于将值作为QDateTime 、整数或这些类型的列表检索。
Qt Protobuf 模块
- 在生成的 Protobuf 消息中添加了Qt Protobuf 可变获取器,使其可通过
mut前缀访问。
Qt Qml 模块
- 新增了TreeModel QML类型,允许在QML文件中定义树结构,并支持TreeView 。
- 新增了SortFilterProxyModel QML类型,用于对模型数据进行排序和过滤。此功能处于技术预览阶段。
- 在DelegateModel 及所有视图中添加了delegateModelAccess属性。现在,您可以通过必需属性将数据写入模型。
- 新增了Synchronizer QML 类型。Synchronizer 可在不使用绑定的情况下,保持两个或多个属性的同步。此功能处于技术预览阶段。
- 在 qmlformat 中添加了分号自定义规则。现在您可以控制是否在 JS 语句末尾添加分号。
- 新增了专注于提升与Qt Creator 兼容性的 qmllint 警告,包括针对Qt Design Studio 特定限制的检查、额外的 JavaScript 相关警告,以及若干与 QML 枚举和导入相关的新警告。
- 已从TableModel 中移除了对复杂行结构操作的支持。
- 更改了TableModel::setData 中角色和值参数的顺序,以消除歧义。
Qt Quick 模块
- 添加了FlexboxLayout QML 类型,以便像CSS Flexbox 一样灵活地排列快速项目。此功能处于技术预览阶段。
Qt Quick Controls 模块
- FluentWinUI3 样式已增强对 Windows 11 对比度主题的支持。
- 新增了SearchField 控件
Qt Quick Dialogs 模块
- 新增了popupType 属性,可用于控制非原生对话框是应在单独窗口中打开,还是作为现有场景中的一个项目显示。使用原生对话框时,此属性无效。
Qt Quick Effects 模块
Qt Quick 3D 模块
- 在形状发射器中添加了 `emitMode `,以便根据形状的表面法线发射粒子。
- 实现了reversed 发射器,使粒子能够从结束时间运行到开始时间。
- 若干与光照贴图相关的改进和变更:
- 引入了基于“每单位纹素数”的光照贴图尺寸,新增了Model::texelsPerUnit 和Lightmapper::texelsPerUnit 属性,并取代了现已弃用的Model::lightmapBaseResolution 属性。
- 引入了Lightmapper::source 属性,用于为整个场景设置一个光照贴图源,该属性取代了已弃用的BakedLightmap::loadPrefix 。
- 为烘焙光照贴图新增了基于 GPU 的内置非局部均值(NLM)去噪功能,可通过Lightmapper::denoiseSigma 属性进行控制。
- 光照贴图烘焙窗口已得到改进,现在会显示进度条和剩余时间估计值。
- 烘焙现在在独立的 RHI 上下文中进行,不会阻塞正在运行的应用程序的渲染。
- 烘焙某些场景时,RAM 和 VRAM 的占用量已减少。
- 新增了光照贴图查看器工具,可通过图形界面或命令行对烘焙后的光照贴图文件进行调试。
- 修复了 glTF2 baseColorFactor 的颜色导入问题,通过将线性颜色正确转换为 sRGB,使其符合规范。
- 在QtQuick3D 中添加了CapsuleGeometry 。Helpers 具有固定的纹理、支持异步创建,并暴露了 uvProfile 属性。
Qt Quick 3D XR 模块
- 公开了method ,用于请求对空间锚点进行房间扫描。
Qt Quick 3D 物理模块
- 已弃用CapsuleGeometry ,转而使用QtQuick3D 中经过改进的版本。
Qt Quick VectorImage 模块
- 新增对动画 SVG 的支持,该功能与Qt SVG 中提供的动画支持相匹配。
- 新增了API 属性,用于指示源文件是否可信。
- 添加了API 来控制动画行为。
- 通过包含由 Qt Lottie Animation提供的插件,VectorImage 现也可显示 Lottie 文件。此功能目前处于技术预览阶段,需要将assumeTrustedSource 设置为
true。
Qt Serial Port 模块
- 新增了通过writeBufferSize 属性限制写入缓冲区大小的支持。
Qt Serial Bus 模块
- 为QCanBusDeviceInfo 添加了缺失的移动构造函数。
- 将QCanBusFrame::FrameType 和QCanBusFrame::FrameError 设为 QMetaEnums。
- SocketCAN 插件不再设置默认比特率,以避免运行时警告。比特率必须通过系统手段(
ip link set ...)或通过 libsocketcan 及QCanBusDevice::setConfigurationParameter (QCanBusDevice::BitRateKey 等)进行设置。 - VirtualCAN 插件现支持多达十个虚拟 CAN 通道,编号从 can0 到 can9。
Qt SQL 模块
Qt SVG 模块
- 新增了对 fill-opacity、stroke-opacity 和 opacity 属性的 CSS 动画支持。
- 添加了一个演示如何查看 SVG 文件的示例。
Qt Test 模块
- 数据驱动的基准测试现可在明文名称中同时识别全局数据和本地数据
- 在 Apple Silicon 上,现已禁用 lldb 的回溯信息
- 当 `QTest ` 在比较中打印浮点数时,现在会提供完整精度并包含十六进制浮点数版本
Qt VirtualKeyboard 模块
- 在第三方来源的署名文件中添加了 PURL 和 CPE 信息。
- 添加了拉脱维亚语键盘布局。
Qt WebEngine 模块
- 添加了对 Chromium 扩展的支持,使用QWebEngineExtensionManager 和QWebEngineExtensionInfo
- 新增了在不将证书添加到平台证书存储库的情况下,向网站配置文件添加额外受信任 CA 证书的支持:setAdditionalTrustedCertificates
- 已支持通过以下方式启用“后退/前进”缓存:QWebEngineSettings::BackForwardCacheEnabled
Qt WebView 模块
- 为 Windows 平台新增了 WebView2 插件。新后端使用基于 Chromium 的 Edge 浏览器中名为WebView2 的原生 COM API。因此,您现在无需随附Qt WebEngine 即可提供 Web 内容。
Qt Widgets 模块
- 新增对 Fusion、macOS 和 Windows 11 小部件样式的高对比度模式的支持。
- 项目视图中的默认编辑器事件处理已移至新的QAbstractItemDelegate::handleEditorEvent() 函数中,自定义事件处理程序可使用该函数继续执行标准事件处理。
- 在 `QListWidget`、`QTableWidget` 和 `QTreeWidget ` 中使用 `setSupportedDragActions()` 来更改支持的拖动操作。
- 新的QLayout::horizontalSizeConstraint 和QLayout::horizontalSizeConstraint 属性允许单独设置小部件的水平和垂直尺寸限制。
Qt XML 模块
Qt MQTT 模块
- 添加对 WebSockets/安全 WebSockets 的支持
工具
QDoc 文档生成器
- QDoc 现可自动为每个 C++ API 声明添加“查看源代码”链接。可通过新的url.sources系列配置变量(
url.sources.enabled、url.sources.rootdir、url.sources.linktext)启用此功能。 - QDoc 现可通过弗洛伊德(Floyd)循环检测算法识别 QML 类型中的循环继承,并报告该问题,而非陷入无限循环。
- 当您使用
\qmlproperty命令对.qml文件中定义的 QML 属性组进行文档化时,系统会识别这些属性组并将其显示为单个分组属性。 - 由 Qt 工具(
moc_、uic_、qrc_等)生成的源文件现在会被自动跳过,从而缩短大型项目的 QDoc 构建时间。 - 现在,即使对于未别名的属性,也可以在
\qmlproperty命令中直接覆盖.qml文件中显示的 QML 属性数据类型。 - “documentationinheaders”选项不再作为技术预览提供,而是被视为稳定功能。该选项首次引入于 Qt 6.9。
- 在生成 DocBook 输出时,QDoc 现在会包含重载说明。
- 重载的信号和槽现在包含一个上下文代码片段,以展示其用法。
- QDoc 可以链接 LLVM 21 中的 Clang 库。
- .index-files 文件包含由 `\fn-` 命令声明的返回类型。这在多项目构建中非常有用,例如当作者使用 `
auto` 重写函数的返回类型时。 - 现在,您可以使用新的 \qmlenum 命令为 QML 枚举添加注释。QDoc 会在生成的文档中创建一个名为“QML 枚举”的新章节。
- 代码片段的缩进现已标准化,去除了多余的左侧空白。这意味着来自深度缩进源代码的片段(例如在一系列深度嵌套的
if语句中),在显示时将如同未嵌套一般。 - QDoc 现在可以正确解析带有默认参数的模板别名。
- 如果存在未被废弃的替代方案,QDoc 将不再自动链接到已废弃的函数。
- 您可以使用新的\notranslate 命令来阻止字符串的机器翻译。
Qt Linguist
- 在Qt Linguist 和 lupdate 中增加了对使用自定义标签组织基于 ID 的翻译的支持。
- 在Qt Linguist 中引入了 QML 表单预览功能,用于在上下文中对翻译进行可视化验证。
- Qt Linguist 已更新,界面焕然一新,包括新图标、改进的调色板以及对深色模式的更好支持。
- lupdate 和 lrelease 现支持在同一文档中混合使用基于 ID 和基于文本的翻译。
- 从 lupdate 中移除了基于 Clang 的解析器。
- 在 lupdate 中统一了不同编程语言对元字符串(如 //: 和 //~ 的注释)的支持。
- 在文档中添加了新的 i18n 示例。
- lrelease 现在提供了 -fail-on-unfinished 选项,如果存在未完成的翻译,则会使构建失败。
- 已弃用使用
//=元字符串注释为基于文本的翻译设置ID的做法。
平台变更
构建系统变更
- 使用私有 Qt 模块 Foo 现在需要调用
find_package(Qt6 COMPONENTS FooPrivate),以使Qt6::FooPrivate目标可用。 - 在
qt_add_resources()中添加了DISCARD_FILE_CONTENTS选项。 qt6_generate_deploy_[app_]script的FILENAME_VARIABLE选项(已在 Qt 6.6.0 中弃用)已被移除。- 在
qt_deploy_runtime_dependencies中添加了NO_PLUGINS参数。这将完全禁用插件部署。 - 在
qt_deploy_runtime_dependencies中添加了INCLUDE_PLUGIN_TYPES、EXCLUDE_PLUGIN_TYPES、INCLUDE_PLUGINS和EXCLUDE_PLUGINS参数。 - 在
qt_generate_deploy_app_script中添加了用于选择 Qt 插件的参数。 qt6_import_plugins在 Linux 上使用 CMake 部署 API 时,该选项对插件部署不再产生任何影响。qt6_deploy_runtime_dependencies现在在 Linux 上支持以下插件选择标志:INCLUDE_PLUGINS、INCLUDE_PLUGIN_TYPES、EXCLUDE_PLUGINS、EXCLUDE_PLUGIN_TYPES。- 在
qt_add_qml_module()中添加了DISCARD_QML_CONTENTS选项,该选项可从目标的资源系统中删除原始的 QML 和 JS 文件内容。
桌面平台
Windows
- Windows on ARM 的预编译二进制文件还包含QtWebEngine 和QtWebView 。
Linux
- Linux 桌面预编译二进制文件现采用 RHEL9 构建,这使得 glibc 的最低要求从 2.28 提高到 2.34。
macOS
- 启用了扩展动态范围(EDR)的 Windows 系统现在会在屏幕亮度变化时触发 expose 事件
- 现支持 titleUIElement 辅助功能属性
- 服务菜单集成现已支持富文本
- QOperatingSystemVersion::MacOSTahoe 代表 macOS 26
- 已添加 WhatsThisCursor 和 BusyCursor 的映射
- QImage::toCGImage() 现可传播图像的色彩空间
Linux 上的 Wayland 客户端
移动平台
Android
Android 版 Qt
- 将 Gradle 更新至 8.14.2 版本,将 Android Gradle 插件 (AGP) 更新至 8.10.1 版本。
- 已添加对 Android 12 启动画面的支持。
- 新增对 Android 16KB 页面大小的支持。
- 新增了一个示例(QtJennyDemo),用于通过代码生成器(QtJenny)生成的 C++ 封装类访问 Android API。
- 将 Android 16(API 36)设为支持的最高平台版本。
Qt Quick 适用于 Android
- 为 QtQuickView 下的信号增加了对多个参数的支持。
- 增加了在 QML 完全加载之前注册信号监听器的支持。
- 以 javadoc 格式提供的公共 Java API。
iOS
- 为 Apple Pencil 增加了对QPointingDevice 的支持
- 修复了标准 Apple Pencil 的旋转问题
- 新增对第二代及后续版本 Apple Pencil 悬停功能的支持
- 启用了扩展动态范围(EDR)功能的 Windows 系统,现在在屏幕亮度变化时会触发“显示”事件
- 当应用退出活动状态时,更新请求将暂停
- QScreen 现在还会报告屏幕方向倒置的情况
- RLIMIT_STACK 现反映实际栈大小
- QImage::toCGImage() 现将图像的色彩空间传递下去
嵌入式平台
Boot to Qt
- 已添加对 Yocto 5.2 (Walnascar) 的支持。
- 目标硬件支持级别已更新,增加了 Tier 2 级别的支持主板:
- NXP i.MX 93 11x11 LPDDR4X EVK。
- 已更新目标硬件支持级别,新增了第 3 级支持的开发板:
- Toradex Colibri iMX6 ULL。
实时操作系统
- 仅对 LTS 版本提供实时操作系统支持。对于非 LTS 版本,支持服务仅通过专业服务提供。
Qt 6.10 中已弃用的模块
以下模块已被废弃。我们强烈建议不要在新代码中使用它们。
Qt Charts 和 Qt DataVisualization 模块已被废弃。它们仍属于授权软件的一部分,并继续作为 Qt 项目的一部分存在。但是,对于新代码,我们建议您使用 Qt Graphs。此外,请参阅以下文档:{Qt Graphs 从Qt Charts 迁移 }{从Qt Charts 迁移 } 以及从Qt Data Visualization 迁移 。
有关 Qt 中模块生命周期的更多信息,请参阅QUIP-14。
API 变更列表
这些页面概述了 Qt 6.10 中的 API 变更:
已知问题
有关 Qt 6.10 中已知问题的信息,请参阅Qt Wiki。
© 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.