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() 返回存储在值中的字符串的视图,无需任何分配。
- 使用QDataStream::operator bool() 和QTextStream::operator bool() 检查数据流是否处于错误状态。
- 使用nullTerminate() 为QByteArray 或QString 添加空结束符,例如在通过QByteArray::fromRawData() 构造它们之后。使用 isNullTerminated() 测试数组或字符串是否为空结束符。
- QByteArray 现在可以隐式转换为 std::string_view。
Qt DBus 模块
- QDBusConnectionInterface::serviceCredentials() 返回当前持有指定总线服务的进程的连接凭证。
Qt Graphs 模块
- 新增填充表面图形类型:DrawFilledSurface
- 为 2D 轴添加了文本隐藏支持:QAbstractAxis::textElideMode
- 为小尺寸切片添加了饼状切片标签隐藏支持:QPieSeries::angleSpanVisibleLimit,QPieSeries::angleSpanLabelVisibility 、QPieSeries::LabelVisibility
- 为二维图形添加了多轴支持:QAbstractSeries::axisX 、QAbstractSeries::axisY
- 添加了对二维序列的悬停支持:QAbstractSeries::isHovered
- 支持在二维图形中控制绘图区域剪裁:clipPlotArea
- 支持在LineSeries 中查询数据点坐标:QLineSeries::dataPointCoordinatesAt
- 支持在Bars3D 和Surface3D 中将切片渲染为图像 添加:Q3DBarsWidgetItem::renderSliceToImage,Q3DSurfaceWidgetItem::renderSliceToImage 、QtGraphs3D::SliceCaptureType
- 已添加:Bars3DNode,Scatter3DNode, 和Surface3DNode ,用于在 View3Ds 内的QtQuick3D 应用程序中添加 3D 图形
- 为 2D 图形添加了图形绘制排序支持:QAbstractSeries::zValue
- 添加了为DateTimeAxis 设置时区的选项:QDateTimeAxis::timeZone
- 新增分类日志支持
Qt GRPC 模块
- 对QGrpcHttp2Channel 进行了性能改进和错误修复。请点击此处阅读博文。
- 已将
unix-abstract
Transportation 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 中添加了可配置的保持连接超时。
- 使QHttpServerRequest 可复制。
Qt Lottie Animation
- 已添加对实心层、空层和预合成层的支持。
- 添加了lottietoqml工具。这是一个与svgtoqml相当的工具,可将 Lottie 文件转换为以 QML 描述的Qt Quick 场景。目前处于技术预览阶段。
- 为VectorImage 添加了一个插件,使其除了能加载 SVG 外,还能加载 Lottie 文件。此功能为技术预览版,需要将assumeTrustedSource 设置为
true
。 - 已添加 lottietoqml 示例和 qtlottieviewer 示例,以演示如何使用 Qt Lottie Animation.
Qt Multimedia 模块
- 添加了本地 PipeWire 音频后端。
- 基于优秀的Signalsmith Stretch 库,为基于 FFmpeg 的QMediaPlayer 提供音频音调补偿。可通过pitchCompensation 属性自定义行为。
- QCapturableWindow 现在可在 C++ 和 QML 中通过QWindow 构建 "FFmpeg 音频后端"。
- 添加了一个新类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 类型。同步器可在不使用绑定的情况下保持两个或多个属性同步。该功能处于技术预览阶段。
- 为 qmlformat 添加了分号自定义规则。现在可以控制是否在 JS 语句末尾添加分号。
- 新增了 qmllint 警告,重点是提高与Qt Creator 的兼容性,包括检查Qt Design Studio 的特定限制、额外的 JavaScript 相关警告,以及与 QML 枚举和导入相关的若干新警告。
- 从TableModel 删除了对复杂行结构操作的支持。
Qt Quick 模块
- 添加了FlexboxLayout QML 类型,以类似CSS Flexbox 的灵活方式排列快速项目。此功能处于技术预览阶段。
Qt Quick Controls 模块
- FluentWinUI3 风格改进了对 Windows 11 对比度主题的支持。
- 已添加SearchField 控件
Qt Quick Dialogs 模块
- 添加了属性popupType ,可用于控制非本地对话框是在单独窗口中打开,还是作为现有场景中的一个项目打开。此属性在使用本地对话框时无效。
Qt Quick Effects 模块
Qt Quick 3D 模块
- 为形状发射器添加了发射模式,允许根据形状的表面法线发射粒子。
- 实现了reversed 发射器,使粒子可以从结束时间运行到开始时间。
- 多项与光贴图相关的改进和更改:
- 引入了基于每单位像素的光贴图尺寸,添加了Model::texelsPerUnit 和Lightmapper::texelsPerUnit 属性,并替换了现已废弃的Model::lightmapBaseResolution 属性。
- 引入Lightmapper::source 属性,为整个场景设置一个光贴图源,取代并废弃了BakedLightmap::loadPrefix 属性。
- 为烘焙光贴图添加了基于 GPU 的内置非局部均值(NLM)去噪,可通过Lightmapper::denoiseSigma 属性控制。
- 改进了光贴图烘焙窗口,以显示进度条和剩余时间估算。
- 现在,烘焙在自己的 RHI 上下文中进行,不会阻止正在运行的应用程序的渲染。
- 在烘焙某些场景时,减少了 RAM 和 VRAM 的使用。
- 添加了光贴图查看器工具,可通过图形用户界面或命令行调试已烘焙的光贴图文件。
- 修正了 glTF2 baseColorFactor 的颜色导入,正确地从线性转换为 sRGB,使其符合规范。
- 为QtQuick3D.Helpers 添加了CapsuleGeometry ,其中包含固定纹理、异步创建支持和公开的 uvProfile 属性。
Qt Quick 3D XR 模块
- 公开了method ,用于请求空间锚点的房间扫描。
Qt Quick 3D 物理模块
- 弃用CapsuleGeometry ,改用QtQuick3D 中的改进版本。
Qt Quick 矢量图像模块
- 添加了对动画 SVGs 的支持,与Qt SVG 中的动画支持相匹配。
- 已添加API 以指示源文件是否可信。
- 已添加API 以控制动画行为。
- 通过包含由 Qt Lottie Animation提供的插件,VectorImage 现在还可以显示 Lottie 文件。此功能被视为技术预览,需要将assumeTrustedSource 设置为
true
。
Qt Serial Port 模块
- 已添加使用writeBufferSize 属性限制写缓冲区大小的支持。
Qt Serial Bus 模块
- 为QCanBusDeviceInfo 添加缺失的 move-constructor 。
- 使QCanBusFrame::FrameType 和QCanBusFrame::FrameError 成为 QMetaEnums。
- SocketCAN 插件不再设置默认比特率以避免运行时警告。设置比特率必须通过系统手段
ip link set ...
或 libsocketcan 和QCanBusDevice::setConfigurationParameter(QCanBusDevice::BitRateKey, ...)。 - VirtualCAN 插件现在最多可支持 10 个虚拟 CAN 通道(从 can0 到 can9)。
Qt SQL 模块
Qt SVG 模块
- 已添加对填充不透明度、描边不透明度和不透明度属性的 CSS 动画支持。
- 添加了一个示例,演示如何查看 SVG 文件。
Qt Test 模块
- 数据驱动基准现在可以用明文名称识别全局和本地数据
- 在 Apple Silicon 上现在禁用 lldb 的回溯功能
- 当QTest 在比较中打印浮点数值时,现在可提供全精度并包含 hexfloat 版本。
Qt 虚拟键盘模块
- 在第三方来源的属性文件中添加了 PURL 和 CPE 信息。
- 已添加拉脱维亚语键盘布局。
Qt WebEngine 模块
- 已添加对 Chromium 扩展的支持,使用QWebEngineExtensionManager 和QWebEngineExtensionInfo
- 已添加对在网站配置文件中添加其他可信 CA 证书的支持,而无需将其添加到平台证书存储中:setAdditionalTrustedCertificates
- 已添加对启用 Back/Forward 缓存的支持,使用QWebEngineSettings::BackForwardCacheEnabled
Qt WebView 模块
- 为 Windows 平台添加了 WebView2 插件。新的后端使用基于 Chromium 的 Edge 浏览器中名为WebView2 的本地 COM API。因此,您现在可以在不使用 Qt XMLWebEngine 的情况下提供网页内容。
Qt Widgets 模块
- 为融合、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 创建时间。 .qml
文件中 QML 属性显示的数据类型现在可以直接在\qmlproperty
命令中重写,即使是非锯齿属性。- documentinheaders选项不再作为技术预览提供,而是被视为稳定选项。该选项在 Qt 6.9 中首次引入。
- 在生成 DocBook 输出时,QDoc 现在包含重载注释。
- 重载信号和插槽现在包含一个上下文片段,以显示其用途。
- QDoc 可与 LLVM 21 的 Clang 库链接。
- .index 文件包含 \fn-commands 的声明返回类型。这对于多项目构建非常有用,因为作者可以使用
auto
来覆盖函数的返回类型。 - 现在您可以使用新的\qmlenum命令来记录您的 QML 枚举。QDoc 会在生成的文档中创建新的 QML 枚举部分。
- 代码片段缩进现在已规范化,去掉了多余的左侧空白。这意味着缩进较多的源代码片段(例如,嵌套较深的
if
-statements 系列)将以未嵌套的方式显示。 - QDoc 现在能正确解析带有默认参数的模板别名。
- 如果有非废弃的替代函数,QDoc 不再自动链接到废弃的函数。
- 您可以使用新的\notranslate-command 阻止机器翻译字符串。
平台变更
构建系统变更
- 使用私有 Qt 模块 Foo 现在需要调用
find_package(Qt6 COMPONENTS FooPrivate)
,以使Qt6::FooPrivate
目标可用。 - 为
qt_add_resources()
添加了DISCARD_FILE_CONTENTS
选项。 - 删除了在 Qt 6.6.0 中被弃用的
qt6_generate_deploy_[app_]script
的FILENAME_VARIABLE
选项。 - 为
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 XML 插件的参数。 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
MacOS
- 选择扩展动态范围 (EDR) 的 Windows 现在可在屏幕亮度变化时触发曝光事件
- 现在支持 titleUIElement 可访问性属性
- 服务菜单集成现在支持富文本
- QOperatingSystemVersion::MacOSTahoe 代表 macOS 26
- 添加了 WhatsThisCursor 和 BusyCursor 的映射
- QImage::toCGImage() 现在可传播图像的色彩空间
Linux 上的 Wayland 客户端
移动平台
安卓
安卓版 Qt
- 更新 Gradle 至 8.14.2 版,更新 Android Gradle Plugin AGP 至 8.10.1 版。
- 已添加对 Android 12 闪屏的支持。
- 已添加对 Android 16KB 页面大小的支持。
- 添加了一个示例 (QtJennyDemo),用于通过代码生成器 (QtJenny) 生成的 C++ 封装访问 Android API。
Qt Quick 针对安卓
- 为 QtQuickView 下的信号添加了多参数支持。
- 已添加在完全加载 QML 之前注册信号监听器的支持。
- 以 javadoc 格式公开 Java API。
iOS
- 为 Apple Pencil 添加了QPointingDevice 支持
- 修复了标准 Apple Pencil 的旋转问题
- 为第二代或更高版本的 Apple Pencil 添加了对悬停功能的支持
- 选择扩展动态范围 (EDR) 的 Windows 现在会在屏幕亮度变化时触发曝光事件
- 当应用程序脱离活动状态时,更新请求现在会暂停
- QScreen 现在还能报告反转的屏幕方向
- RLIMIT_STACK 现在可反映有效堆栈大小
- QImage::toCGImage() 现在可传播图像的色彩空间
嵌入式平台
Boot to Qt
实时操作系统
- 只有 LTS 版本才支持实时操作系统。对于非 LTS 版本,仅通过专业服务提供支持。
Qt 6.10 过时的模块
以下模块已被弃用。我们强烈建议不要在新代码中使用它们。
Qt Charts 和 Qt DataVisualization 模块已被弃用。它们仍是授权软件的一部分,也是 Qt 项目的一部分。不过,对于新代码,我们建议您使用 Qt Graphs.此外,请查阅 {Qt Graphs 从Qt Charts}{migrating fromQt Charts} 和从Qt Data Visualization 迁移的文档。
有关 Qt 模块生命周期的更多信息,请参见QUIP-14。
API 变更列表
这些页面概述了 Qt 6.10 中的 API 变化:
已知问题
有关 Qt 6.10 中已知问题的信息,请参阅Qt Wiki。
© 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.