Qt 6.8 的新功能
Qt 6.8 中的新增和恢复模块
Qt 6.8 新增了以下模块和工具:
- svgtoqml工具(用于从 SVG 文档生成 QML 代码)现已结束技术预览阶段。该工具支持
SVG Tiny 1.2配置文件的静态子集。 - 该 Qt Graphs, Qt HTTP Server, Qt Protobuf和 Qt GRPC 模块均已正式脱离技术预览阶段。
- 新增了 Qt Quick Vector Image 模块,用于在Qt Quick 场景中将SVG文档显示为可缩放矢量图形。
Qt 6.8 中已移除的模块
以下模块已被废弃。我们强烈建议不要在新代码中使用它。
Qt 3D 模块
该 Qt 3D 该模块已被弃用。Qt 3D 仍是许可软件的一部分,也仍是 Qt 项目的一部分。该模块将继续与其他模块集成,以支持未来的版本发布。 关键错误和安全漏洞将由 KDAB 的模块维护人员处理。关于新功能和特性,用户应通过发送电子邮件至 info@kdab.com 联系 KDAB。
Qt 6.8 的新功能
Qt Core 模块
- QChronoTimer 模块是QTimer 的替代方案,其全程使用 std::chrono 时长类型。
- QTimer::id() 返回一个 `Qt::TimerId`,该类型已在各种方法的新重载中引入并被接受,以替代原有的 `int` 定时器 ID。
- 进一步支持使用 std::chrono 时长来替换QAbstractEventDispatcher 中的整数纳秒参数。
- QString、QByteArray 以及QList 新增了 resizeForOverwrite() 方法。
- QString、QByteArray 获得了与
*this = sliced()等效的 slice() 方法。 - QString,QByteArray 、QList 、QVarLengthArray 新增了 max_size() 方法,以兼容标准模板库 (STL)。
- QList 在内容类型允许的情况下,支持使用未初始化的条目构建指定大小的数组。
- QVarLengthArray::PreallocatedSize 用于指定 Prealloc 参数。
- QLatin1StringMatcher::indexIn() 现在可以接受一个QStringView 。
- QCollatorSortKey 现在支持移动构造。
- QStringEncoder QStringDecoder 现在可以将编码名称作为 接受。QString
- QThread 新增了isMainThread()、isCurrentThread()。
- QThreadPool::waitForDone() 现接受QDeadlineTimer 作为参数,以替代 int 类型的毫秒值。
- QDirListing 提供对目录条目的 STL 风格迭代。
- QVersionNumber 现在可以从QSpan 构建;它也可以进行迭代。
- qHash() 现在接受 quint128 和 qint128。
- QMap::qHash() 返回键的哈希值。
- QHash 现在可以对键的不同类型进行哈希处理,前提是这些类型被标记为在等效值下具有等效的哈希结果(仅限 C++20)。这适用于QString/QStringView 和QByteArray/QByteArrayView 配对。在除 ARM 处理器以外的所有系统上,QLatin1StringView 也参与QString 和QStringView 的哈希处理。
- QPointF,QLineF,QRectF 以及QMarginsF 现支持模糊比较和空值检查。
- 定义QT_ENABLE_STRICT_MODE_UP_TO可选择不使用各种 API,文档中会说明从哪个版本开始将其排除。
- 定义QT_NO_QASCONST以禁用 qAsConst()。
- 定义QT_(NO_)USE_NODISCARD_FILE_OPEN以控制 I/O 类中
open()方法的[[nodiscard]]。 - QLibraryInfo::paths() 返回所有相关路径。
- QCryptographicHash 和QMessageAuthenticationCode 增加了hashInto() 方法,用于将数据的哈希值计算到给定的缓冲区中。
- 更多带有 `
operator<()` 的 `QtCore ` 类型,在采用 C++20 编译时(甚至在 C++17 中也支持 `compareThreeWay()`),现在也支持 `operator<=>()`。这些类型现在一致地支持全部六个关系运算符(作为隐藏的朋友函数),并支持其所支持的每种混合类型比较的逆运算。在 Qt 6.8 中,这适用于:- qfloat16
- QAnyStringView
- QByteArray
- QByteArrayView
- QCborArray
- QCborMap
- QCborValue
- QChar
- QDate
- QDateTime
- QDeadlineTimer
- QElapsedTimer
- QLatin1Char
- QLatin1StringView
- QModelIndex
- QOperatingSystemVersion
- QPersistentModelIndex
- QString
- QStringView
- QTime
- QTypeRevision
- QUrl
- QUtf8StringView
- QUuid
- QVersionNumber
- QtJniTypes 命名空间(包含用于根据 JNI 签名声明 Java 类型的宏)已从技术预览阶段正式发布,并提供了相关文档。
- QJniObject 和QJniEnvironment API 的可变参数模板版本已不再处于初步阶段,并已提供完整文档。
- 新的QJniArray 模板类使从 C++ 代码访问 Java 数组变得更加便捷。
Qt Graphs Module
- Qt Graphs 已从技术预览阶段正式发布。
- 该模块已拆分为两个子模块: Qt GraphsQt Graphs 和Widgets,从而消除了在纯 QML 应用程序中包含小部件的要求。
- 2D 和 3D 图表的主题统一。请参阅GraphsTheme 。
- 请参阅来自Qt Charts和Qt DataVisualization 的迁移指南。
Qt Graphs3D
- 为Bars3D 和Scatter3D 添加了透明度支持。
- 新增对Scene3D.primarySubViewport 和Scene3D.secondarySubViewport 的支持。
- 新增了对偏移图表标题位置的支持。请参阅Abstract3DAxis.titleOffset 。
- 新增对标签边距的支持。参见GraphsItem3D.labelMargin 。
- 新增了使用着色器渲染网格以及更改网格线宽度的支持。请参阅GraphsItem3D.gridLineType 和graphsline.mainWidth 。
Qt Graphs2D
- 新增对AreaSeries 的支持。
- 新增了对使用 QML 组件创建自定义条形图的支持。参见BarSeries.barDelegate 。
- 新增对堆叠柱状图(Stacked)和百分比堆叠柱状图(StackedPercent)的支持。参见BarSeries.barsType 。
- 新增对条形图标签的支持。参见BarSeries.labelsVisible 。
- 为不同系列增加了模型映射器支持。参见XYModelMapper 、BarModelMapper 和PieModelMapper 。
- 为所有系列增加了对LegendData 的支持。
- 新增对动态样条序列的支持。
- 增加了对坐标轴标题的支持。请参阅AbstractAxis.titleText 。
Qt GRPC 模块
- Qt GRPC 已正式发布,结束技术预览阶段。
- 在 GrpcQuick 模块中添加了流式传输支持。
- 已移除 QGrpcInterceptor、QGrpcInterceptorManager 和 QGrpcInterceptorContinuation。
- 在QGrpcClientStream 和 QGrpcBidirStream 中添加了
writesDone()方法,用于从客户端半关闭流。
Qt GUI 模块
- QStyleHints::colorScheme 现在提供了一个设置函数,允许应用程序尝试使用显式的“深色”或“浅色”方案覆盖系统设置。
- 添加了QFont::ContextFontMerging ,可用于启用一种新的字体合并算法,该算法在选择备用字体时会考虑整个字符串。这可能会带来一些额外开销,但在某些情况下,会带来更好的效果。
- 新增了QFont::PreferTypoLineMetrics 样式策略,可将其设置为始终优先使用 OpenType 字体中的排版行度量,即使该字体未手动设置USE_TYPO_METRICS标志也是如此。
- 为 macOS 添加了对QDesktopServices 自定义及httpsURL 方案的支持,与 iOS 中的实现类似。
- QImage::Format_CMYK8888 已添加 32 位 CMYK 图像格式。
- QColorSpace 已添加对 ICC A2B 色彩空间处理的支持,同时明确支持灰度和 CMYK 色彩空间。
- 新增了对QColorSpace::Bt2020 、QColorSpace::Bt2100Pq 和QColorSpace::Bt2100Hlg HDR 色彩空间的支持。
- QColorSpace::transformModel() 返回底层处理模型。
- QColorSpace::colorModel() 返回该色彩空间所针对的色彩模型。
- QImage::colorTransformed已添加具有三个参数的 () 和QImage::applyColorTransform() 变体,以支持同时转换图像格式和色彩空间。
- QStyleHints::contextMenuTrigger 是一个可写属性,允许应用程序控制上下文菜单是通过按下还是释放按钮来打开。
- Qt 辅助功能接口现在可以支持将attributes 作为键/值对报告给客户端。
- QAccessibleAnnouncementEvent 应用程序可以触发该事件,以请求辅助技术播报一条消息。
- QPageLayout::setMargins 现在可以接受一个可选的OutOfBoundsPolicy 参数,用于指示超出边界的边距应被拒绝还是被限制。
- QPdfWriter 笔触/填充增加了对 CMYK 的支持。
- QFontDatabase 新增了addApplicationFallbackFontFamily ,用于为特定脚本指定覆盖默认备用字体族。
- 在QRhi 中完成了多视图渲染的支持。现在 Vulkan 1.1 实现也支持多视图,而不再要求 Vulkan 1.2。这对于基于 Android 的设备(如 Meta Quest 3)尤为重要。
- 在支持该功能的平台和 API 上,引入了QRhi 对多采样深度(深度/模板)渲染自动解析为非多采样深度(深度/模板)纹理的支持。详情请参阅QRhiTextureRenderTargetDescription::setDepthResolveTexture() 和QRhi::ResolveDepthStencil 。
Qt Multimedia 模块
- 新增了类QVideoFrameInput 和QAudioBufferInput ,它们可以通过QMediaCaptureSession 将自定义媒体数据发送至QMediaRecorder 。
- 新增了类QAudioBufferOutput ,该类可从QMediaPlayer 接收解码后的音频数据。
- 新增了类QAbstractVideoBuffer ,允许使用自定义视频数据创建QVideoFrame 实例。
- QMediaRecorder 可将媒体输出写入QIODevice 。
- 在 Linux 上添加了对使用 Wayland 合成器的QScreenCapture 的支持,该合成器通过 XDG Desktop Portal 支持 ScreenCast 服务。
- FFmpeg 库与 FFmpeg 插件动态链接,所使用的共享 FFmpeg 模块随Qt Multimedia 一起提供。
- 新增了对 iOS 上 FFmpeg 媒体后端的支持。
- 将所需的最低 GStreamer 版本提高到 1.20。
Qt Network 模块
- QNetworkAccessManager 现已支持使用unix+http:或local+http:方案通过本地套接字发送 HTTP 请求。
- QDnsLookup 现在支持通过 TLS 发送 DNS,并能告知 DNS 服务器是否对数据真实性进行了验证。
- QDnsLookup 新增了对 TLS 关联记录的支持。
- QNetworkCacheMetaData QNetworkProxy 、 和 现在可以获取和设置头信息。QNetworkRequest QNetworkReply
- QNetworkRequestFactory 允许为未来的请求设置priority 以及attributes 。
- 添加了类QFormDataPartBuilder 和QFormDataBuilder ,以便于创建 QHttpMultipart 消息。
Qt Network 身份验证模块
- 新增了QOAuthUriSchemeReplyHandler 类,用于处理私有/自定义及 HTTPS URI 方案的重定向(支持平台:iOS、Android 和 macOS)。
- 在QOAuth2AuthorizationCodeFlow 类中添加了对密钥代码交换证明(PKCE)的支持。PKCE 是一项推荐的安全措施,用于缓解授权码拦截攻击。
- 根据多位用户的反馈,我们重新审视并解决了许多问题,旨在全面改进 qnetworkauth。这包括多项错误修复、功能改进、弃用项、文档补充,以及一份帮助用户入门的概述文档。
Qt Positioning 模块
- Qt Positioning 的Android后端现可在Android 14及更高版本上提供MSL格式的海拔高度。
Qt Protobuf 模块
- 该 Qt Protobuf 模块已正式脱离技术预览阶段。
Qt Qml 模块
- 为QML Language Server 添加了新功能:语义高亮、更多 JavaScript 语言支持、对 Quick 类型的代码片段支持、文档提示、QML 文件重命名以及对
.qmllint.ini警告配置的支持 - 新增了
pragma ValueTypeBehavior: Assertable。这使得在值类型上使用as强制转换时能够进行正确的类型检查。如果没有此pragma,对值类型使用as会创建该类型的实例,而非仅进行类型检查。新属性确保了as强制转换在类型断言中能正确工作。 - 改进了值类型的处理。当从字符串构造已知值类型(如
point、rect、size)时,qmllint现会发出警告,以鼓励使用正确的构造函数。值类型现在可以拥有默认构造函数,并与类型系统更好地集成。 - 引入增量垃圾回收机制,以提升应用程序的响应速度。垃圾回收器现在会分多个帧增量地执行工作,而不是长时间阻塞执行。这显著减少了暂停时间,并提供了更流畅的性能,对于复杂应用程序尤为明显。增量垃圾回收包括:
- 增量标记阶段,以避免长时间暂停
- 用于内存回收的增量清扫阶段
- 可通过环境变量配置时间限制
- QJSEngine::collectGarbage() 的行为现已与 QML 的
gc()方法保持一致,以确保一致性。 - 现在可以在 QML 中使用构造函数语法直接创建可构造的值类型,从而能够更简洁地初始化诸如
color、rect以及用户自定义类型等值类型。 - 新增了两项影响qt_add_qml_module()行为的CMake 策略:QTP0004简化了在使用嵌套文件夹结构时的 QML 模块使用。QTP0005允许在指定导入和依赖项时使用目标。
Qt Quick Compiler
- Qml 脚本编译器现在会记录有关 Qml 到 Cpp 编译的统计信息。通过在项目上运行 all_aotstats 目标,可以查看这些信息。
Qt Quick 模块
- 新增了 font.contextFontMerging 属性,可用于启用一种新的字体合并算法,该算法在选择备用字体时会考虑全文内容。虽然这可能会带来一些额外开销,但在某些情况下将产生更好的效果。
- 新增了 font.preferTypoLineMetrics 属性,将其设置后,系统将始终优先采用 OpenType 字体中的排版行度量,即使该字体未手动设置USE_TYPO_METRICS标志也是如此。
- 在 `Image ` 和 `BorderImage` 中添加了 `retainWhileLoading ` 属性。对于异步加载的图像,当该属性设置为 `
true` 时,当前的图像数据将保留至新图像完全加载完毕。这可以避免闪烁现象。 - 新增了PlanarTransform ,这是一个提供用于指定 2D 变换矩阵的简单函数的辅助对象。
- 新增了PathRectangle ,这是一个可选的圆角矩形路径,适用于Shape 和PathView 。
- 新增了Drag.imageSourceSize 属性,用于控制表示被拖动数据的图像的大小。
- 新增了QQuickRenderTarget::depthTexture ,作为设置自定义深度纹理的一种方式。
- 添加了QQuickRenderTarget::Flag 枚举,以便在通过命名构造函数构建时指定视图格式。
- TableView 现已支持通过编程和交互方式移动columns 和rows 。
- 所有标准的Qt Quick 项和材质均与多视图渲染兼容。当2D内容嵌入到Qt Quick 3D XR场景中且启用了多视图渲染时,该功能会在应用程序中透明地被调用。多视图渲染可提升渲染性能并降低AR/VR设备的功耗。
- 通过QSGMaterial::viewCount() 可以创建支持多视图的自定义材质(QSGMaterial 、QSGMaterialShader )。
- 在QQuickRenderTarget 中,新增了通过多视图渲染将Qt Quick 渲染结果输出到 2D 纹理数组的支持。这是通过QQuickRenderTarget::fromVulkanImage() 等函数的新重载实现的,并为使用 Qt Quick 3D构建的XR应用程序的多视图渲染功能奠定了基础。
- 在QQuickRenderTarget 中,新增了在渲染通道结束时自动执行多采样渲染(multisample resolve )的支持。此前,重定向的Qt Quick 场景的多采样渲染只能通过针对多采样纹理来实现,而解析工作则由应用程序或其着色器负责。 启用后,Qt Quick 现将自动创建用作颜色缓冲区的中间多采样纹理,并自动将其解析到应用程序提供的非多采样纹理中。 这使得Qt Quick 渲染目标纹理能够由仅提供和使用非多采样纹理的外部引擎、框架或API(例如 OpenXR)提供。
- 在QQuickRenderTarget 中添加了对setting a depth texture 的支持。这允许指定应用程序自己的纹理(或在使用多视图渲染时指定纹理数组)来写入深度数据,而不是使用Qt自己的中间缓冲区。 这在必须将深度数据写入由外部引擎、框架或 API(例如 OpenXR)提供的深度纹理时尤为有用。
- 在QQuickRenderTarget 中新增了对指定纹理视图格式的支持。这可通过QQuickRenderTarget::fromVulkanImage() 及其类似函数的新重载中的
viewFormat参数来指定。 此功能专门用于允许从纹理格式中移除或添加 sRGB 限定符,在处理由外部引擎、框架或 XR 合成器提供的纹理时非常有用——这些情况下无法控制纹理格式, 但3D API在着色器写入时默认的线性→sRGB转换却无法接受(例如,因为Qt Quick 3D 材质管道已经执行了相同的操作)。 - QQuickRenderTarget对深度/模板以及多采样颜色数据的中间缓冲区的内部管理已重新设计。调用QQuickWindow::setRenderTarget() 不再会使所有内部临时缓冲区失效,而是会在大小、格式及其他参数匹配的情况下尝试重复利用。 预计这将提升那些必须在每一帧向QQuickWindow 传递不同原生纹理的应用程序和库的性能(例如,因为纹理来自由外部引擎、框架或XR合成器维护的缓冲区池)。
Qt Quick Controls 模块
- 新增了FluentWinUI3 样式,这是一种专为运行 Windows 11 及以上版本的平台设计的、具有现代原生外观的样式。
- 在 `Popup` 及其派生类型中添加了新属性 `popupType `。该属性可用于控制弹出窗口是应出现在场景中,还是应显示在独立的顶级弹出窗口中。
- macOS 样式现可创建原生menus 和menubars 。
- 来自(内部)QtQuick.Controls.impl模块的类型(如PaddedRectangle、MnemonicLabel或类似类型)不再会意外地暴露给任何导入QtQuick.Controls或任何控件样式(controls style)的文档。 这些类型属于私有 API,原本就不应在不显式导入QtQuick.Controls.impl 的情况下被访问。
Qt Quick 形状模块
- 添加了ShapePath 的.fillItem属性。该属性可用于将任何纹理提供程序项(例如分层项和图像)用作形状的填充。
- 新增了ShapePath 的.fillTransform属性,可用于对形状的填充(无论是项目还是渐变)设置任意变换。
Qt Quick 3D 模块
- XR 支持的技术预览Qt Quick 3D
- 支持使用 OpenXR 的头戴式显示器(HMD),例如 Meta Quest 2 和 3。
- 支持 Apple Vision Pro。
- 多视图渲染(单次渲染即可生成双目图像)。
- 通过手部追踪或控制器支持空间输入。
- 支持空间锚点。
- 改进的阴影渲染
- 整体质量提升。
- 增强了阴影调试工具。
- 级联阴影贴图。
- 百分比最近点过滤(PCF)软阴影。
- PrincipledMaterial 增强功能
- 用于调整菲涅尔效应的额外参数。
- 支持基于顶点颜色属性的属性遮罩。
- CustomMaterial:公开PrincipledMaterial 中的其余属性。
Qt Quick VectorImage 模块
- 引入了VectorImage :一个可直接渲染矢量图形的组件Qt Quick ,该组件支持硬件加速且无需预栅格化。它目前支持SVG格式(
SVG Tiny 1.2规范的一个静态子集)。
Shader Tools Qt XML-ph-0000@deepl.internal 模块
- 已完成对多视图渲染兼容着色器的支持。在qt_add_shaders()CMake 函数中添加了
MULTIVIEW关键字。 - 为通过qt_add_shaders() 在构建时处理的着色器添加了 depfile 支持。现在,如果着色器中通过
#include指令引用的文件发生更改,下次构建项目时将触发该着色器文件的重新编译。
Qt SQL 模块
- QSqlDatabase、QSqlQuery 以及QSqlDriver 新增了numericalPrecisionPolicy 功能。
- QSqlDatabase 新增了 moveToThread() 函数,用于更改数据库连接的线程亲和性。
- PostgreSQL 和 MySQL/MariaDB 驱动程序现在能够正确处理服务器与客户端处于不同时区时的日期/时间。
- 所有日志记录现均通过分类日志器Qt SQL 完成,以提升调试效率。
- QSqlField::defaultValue,value,readOnly,requiredStatus,length,precision,generated,autoValue 以及tableName 现已成为属性。
- QSqlIndex::name 此外,cursorName 、QSqlQuery::forwardOnly 和positionalBindingEnabled 现已成为属性。
Qt Test 模块
- 添加了QTEST_THROW_ON_FAIL 和QTEST_THROW_ON_SKIP C++宏和环境变量,定义后,它们会改变QCOMPARE()/QVERIFY()/QSKIP() 等在失败时退出测试函数的方式。 它们不会像返回值那样仅退出最外层函数,而是抛出一个特殊异常,从而从测试函数的子函数一直退出到 QtTestLib。
- QTRY_*_WITH_TIMEOUT宏现在也接受 chrono 字面量(原为:
int毫秒)。 - QTest::failOnWarning() 现在有一个无参数的重载,以支持“任何警告都失败”的常见情况,而无需构建一个匹配所有内容的正则表达式。
- QSignalSpy 不再继承自 `QObject`。如果您的代码利用了 `QSignalSpy ` 是 `QObject` 的这一事实,现在需要针对此情况重新设计代码。
- 当连接失败时,QSignalSpy::signal() 方法不再必然返回一个空字节数组。请使用现有的isValid() 方法来确定给定的QSignalSpy 对象是否正在监听有效对象上的有效信号。
- QCOMPARE_xx 宏现在只能找到通过相关类型的“参数依赖查找”(Argument Dependent Lookup)获得的QTest::toString() 展开形式,或者该形式是QTest::toString<T>() 模板的实例化结果。这与QCOMPARE() 宏的行为一致。
Qt WebEngine 模块
- QWebEngineFrame 模块已添加,用于处理与框架相关的 API,例如在特定框架上运行 JavaScript 或打印特定框架。
- QWebEngineClientHints 已添加,用于通过客户端提示 DOM API 更好地控制浏览器向网页提供的身份信息。
- QWebEnginePermission 新增用于管理新旧网站权限。QWebEnginePage 中现有的权限 API 已被废弃,并由 QWebEngineProfile::getPermission() 和 QWebEngineProfile::listPermissions() 取代
- 新增了QWebEngineProfile::setPersistentPermissionsPolicy() 方法,用于控制网站权限在不同浏览会话间如何保留。默认情况下,接收到的权限将保存到磁盘。
- 新增了QWebEnginePermission::ClipboardReadWrite 和QWebEnginePermission::LocalFontsAccess 权限类型。
- QWebEngineCertificateError::isMainFrame() 表示证书错误来自主框架或子框架。
- QWebEngineNavigationRequest::hasFormData添加了 (),用于指示导航请求正在发送表单数据。
- QWebEngineSettings::imageAnimationPolicy添加了 () 用于控制图像动画策略。
工具
QDoc 文档生成器
- 现在,您可以使用
\keyword命令链接到章节标题,以此来改进上下文相关帮助。 - QDoc 不再错误地链接到未记录的属性访问函数的、不存在的文档。
- 构建系统不再定义
QDOC2_COMPAT。 - 在生成 DocBook 输出时,QDoc 不再对字符进行多次转义。
\instantiates命令已被弃用。请改用新的\nativetype命令。旧命令现在会委托给新命令,并且 QDoc 会生成一条关于其已弃用的通知。- 您可以将 `
auto` 指定为函数的返回类型,以此在生成的文档中隐藏完整类型。 - 改进了 API 文档中“必要条件”表格的格式。
- QDoc 在输出到标准输出(stdout)时生成的重复报告更少了。
- 当没有相关的
\group文档时,.qhp 文件现在会(正确地)包含使用\ingroup命令创建的组项条目。 - QDoc 现在会在 .qhp 文件中为命名空间生成标题,而不仅仅是类和类型。
- QDoc 现在可以正确解析
-DDEFINE=VALUE命令行的选项。 - 在以下情况下,QDoc 会生成新的警告:
- 未找到 qhp 子项目的 indexTitle 属性。
- 针对同一个 C++ 类多次使用
\nativetype命令时。 - 当每个项目中同一文件被多次生成时。
- 先前被选为重载但未通过
\overload命令显式标记的函数,因排序变更而被选为主要签名。此类函数必须完整编写文档,或使用\overload命令进行标记。
- QDoc 不再针对重载构造函数中未记录的参数发出警告,并且已移除一些不必要的链接警告。
- 链接警告现在会报告合理的具体位置。
- QDoc 现要求使用 Clang 17 或更高版本。
- QDoc 手册进行了多次更新。
- 您可以使用新的
\tm命令为商标添加标签。如果您定义了配置变量navigation.trademarkspage,则商标符号 (tm) 将变成指向该页面的链接。 \deprecated command现在支持指定未来版本。- QDoc 宏参数现在支持格式化命令。
\compareswith命令现在允许使用大括号括起的参数。-outputdir命令行选项现在相对于当前工作目录。此外,nosubdirs配置变量不再篡改outputdir中的内容。- 已移除未使用且未在文档中记载的
clangdefines配置变量。 - QDoc 不再生成
.qhp.sha1文件。 - QDoc 现在会为目录中的条目生成唯一的引用。
- 在生成 HTML 输出时,QDoc 现在仅对指向 API 实体的链接添加
translate="no"标记。 - 多项目文档构建中的名称冲突已减少。这可能会影响某些配置下生成的文件名。
- 现在可以使用新的 `
\qtcmaketargetitem` 命令指定 CMake 目标。 - 已移除对下标函数参数的支持。该功能未在文档中记录、未被使用且存在大量错误。移除该功能可节省对每个已文档化的函数签名和
\a命令参数构建及尝试匹配正则表达式所耗费的资源。 - 函数签名的链接外观现在更加统一。
- QDoc 现在支持在 QML 文档中自动生成来自 C++ 枚举的值。
- 配置变量
outputprefixes和outputsuffixes现不仅适用于 QML 类型和模块文档,也适用于 C++ 类型文档。在两个或多个模块定义了相同类型名称的多模块文档配置中,此功能尤为便利。
平台变更
桌面平台
基于 Arm 的桌面
- 现在,您可以在基于 Arm 的 Windows 桌面系统上构建和开发 Qt 以及 Qt 应用程序。
- 现在,您可以在基于 Arm 的 Linux 桌面系统上构建和开发 Qt 以及 Qt 应用程序。
Windows
- 已将字体系统更改为使用 DirectWrite 作为默认后端。这启用了传统 GDI 后端所不具备的一些现代功能。旧的后端仍然可用,可通过向 QPA 插件传递参数 `
fontengine=gdi` 来启用。
macOS
- 新增对 macOS 15 的支持
- 新增对安全区域边距的支持,既适用于全屏应用程序中的摄像头开孔,也适用于内容延伸至标题栏的窗口。
- 通过使用事务呈现 Metal 层,修复了调整Qt Quick 窗口大小时出现的闪烁问题。
- 启用了在调整Qt Quick 窗口大小时运行动画的功能。
- 采用了新的 NSCursor API 用于窗口边框调整大小的光标
- 为“服务”菜单和“书写工具”支持实现了 NSServicesMenuRequestor 协议。
Linux 上的 Wayland 客户端
- 新增了一种窗口装饰样式,该样式用于 GNOME 环境,并采用与 GNOME 相似的样式。
- 对话框的模态状态现在通过新的xdg-dialog-v1 协议转发给合成器。
- 显示窗口时,现在也会向合成器请求激活(除非设置了Qt::WA_ShowWithoutActivating )。
- 在 qtwaylandscanner 中增加了对将 null 作为QString 的支持。
- 在qt_generate_wayland_protocol_client_sources()中添加了
PUBLIC_CODE和PRIVATE_CODE选项,用于控制传递给wayland-scanner的选项。 - 在Qt Multimedia 中,通过 XDG Desktop Portal 中的 ScreenCast 服务实现了屏幕截图功能。
移动平台
Android
- 将支持的最低版本提升至 Android 9。
- 添加了对 build.gradle 命名空间属性的支持。
- 添加了 CMake 属性QT_ANDROID_PACKAGE_NAME来设置包名。
- 将 Gradle 更新至 8.10,将 AGP 更新至 8.6.0。
- 新增对构建 AAR 库包的支持。
- Qt Multimedia 中的原生Android后端已被弃用。
- 使用 `QLibrary` 打开库时,默认情况下不再调用 `JNI_OnLoad`。
- QtQuickView和 QML 嵌入:
- 为 QtQuickView API 增加了强类型支持。
- 新增了用于管理 QML 内容的 API,同时将 QtQuickView 下的这些 Java 类移至各自的类中。其中包括:
- QtQuickView.SignalListener 改为 QtSignalListener。
- QtQuickView.StatusChangeListener 改为 QtQmlStatusChangeListener。
- QtQuickView Status 更名为 QtQmlStatus。
- 新增了 Java 类 QtAbstractItemModel、QtAbstractListModel 和 QtModelIndex,它们分别封装了QAbstractItemModel 、QAbstractListModel 和QModelIndex 。
- 增加了对从服务(Service)嵌入 QML 的支持。
iOS
- 新增对 iOS 18 的支持
- 修复了通过 `QScreen::orientation()` 错误报告 `UIDevice.currentDevice.orientation` 的问题
- 改进了无障碍功能的集成。
visionOS
- 新增对 visionOS 的初步支持。
嵌入式平台
QNX
- 已作为技术预览版添加了对 QNX 8.0 的支持。
- QNX 8.0 不支持多媒体,请在配置时使用 `
-skip qtmultimedia`。
VxWorks
- 已添加对 VxWorks 24.03 的支持。
Boot to Qt
- 已添加对 Yocto 5.0(Scarthgap)的支持。
- 目标硬件支持级别已更新,新增了 Tier 1 级别的支持主板:
- 树莓派 5。
- 已更新目标硬件支持级别,新增 Tier 2 级别的支持板卡:
- NVIDIA Jetson AGX Orin 开发套件(从第 3 级升级而来)。
- 树莓派 4 64 位(从第 1 级降级)。
- 目标硬件支持级别已更新,新增了第 3 级支持的开发板:
API 变更列表
这些页面概述了 Qt 6.8 中的 API 变更:
© 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.