Qt 6.8 中的新功能
Qt 6.8 中新增和恢复的模块
Qt 6.8 新增了以下模块和工具:
- 用于从 SVG 文档生成 QML 代码的svgtoqml工具现已发布技术预览版。该工具支持
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 Project 的一部分。在未来的版本中,该模块将继续与其他模块集成。关键错误和安全漏洞将由 KDAB 的模块维护者处理。关于新特性和新功能,用户应发送电子邮件至 info@kdab.com 与 KDAB 联系。
Qt 6.8 中的新功能
Qt Core 模块
- QChronoTimer 是 的替代品,全程使用 std::chrono durations。QTimer
- QTimer::id()返回一个Qt::TimerId ,在各种方法的新重载中引入并接受 int 定时器 ID 来替代它。
- 更多支持 std::chrono durations 代替QAbstractEventDispatcher 中的纳秒积分参数。
- QString,QByteArray 和QList gain resizeForOverwrite()。
- QString,QByteArray gain slice() 相当于
*this = sliced()
. - QString,QByteArray,QList,QVarLengthArray gain 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)。这适用于 / 和 / 对。在除 ARM 处理器以外的所有系统中, 也参与了 和 的散列。QStringQStringView QByteArrayQByteArrayView QLatin1StringView QString QStringView
- QPointF现在,QLineF 、QRectF 和QMarginsF 支持模糊比较和空值检查。
- 定义QT_ENABLE_STRICT_MODE_UP_TO,以退出各种应用程序接口(API),并记录退出的版本。
- 定义QT_NO_QASCONST,禁用 qAsConst()。
- 定义QT_(NO_)USE_NODISCARD_FILE_OPEN,以控制
[[nodiscard]]
上 I/O 类的open()
方法。 - QLibraryInfo::paths() 返回所有相关路径。
- QCryptographicHash 和 获得 () 来计算输入所提供缓冲区的数据的哈希值。QMessageAuthenticationCode hashInto
- 更多带有
operator<()
的QtCore 类型现在在使用 C++20 编译时也支持operator<=>()
(甚至在 C++17 中也支持compareThreeWay()
)。这些类型现在一致支持所有六个关系运算符(作为隐藏的好友)以及它们所支持的每个混合类型比较的反向运算。在 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 模块
- Qt Graphs已脱离技术预览版。
- 模块拆分为两个子模块、 Qt Graphs和Qt Graphs Widgets,以消除在纯 QML 应用程序中包含 widgets 的要求。
- 二维和三维图形的统一主题。请参见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 bars 的支持。请参见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 样式策略,即使字体没有手动设置USE_TYPO_METRICS标志,也可将其设置为始终优先使用 OpenType 字体中的排版行指标。
- 为 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 XML 辅助功能接口现在可支持将attributes 作为键/值对报告给客户端。
- QAccessibleAnnouncementEvent Qt 辅助功能接口现在可支持以键/值对的形式向客户端报告 。
- 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 桌面门户支持 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
警告配置支持 - 新增两个影响qt_add_qml_module行为的CMake 策略:QTP0004简化了使用嵌套文件夹结构时 QML 模块的使用。QTP0005允许在指定导入和依赖关系时使用目标。
Qt Quick 编译器
- Qml 脚本编译器现在能记录 Qml 到 Cpp 的编译统计信息。在项目中运行 all_aotstats 目标即可显示这些信息。
Qt Quick 模块
- 添加了 font.contextFontMerging,可用于启用新的字体合并算法,在选择后备字体时将全文考虑在内。这可能会增加一些成本,但在某些情况下会带来更好的效果。
- 添加了 font.preferTypoLineMetrics 属性,即使字体没有手动设置USE_TYPO_METRICS标志,也可以将其设置为始终优先使用 OpenType 字体中的排版行度量。
- 为Image 和BorderImage 添加了retainWhileLoading 属性。在异步加载的图像上设置为
true
时,当前图像数据将保留到新图像完全加载完毕。这可以避免闪烁。 - 已添加PlanarTransform ,这是一个实用程序对象,提供用于指定二维变换矩阵的简单函数。
- 已添加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.
- 在QQuickRenderTarget 中添加了在渲染过程结束时自动执行multisample resolve 的支持。在此之前,只有针对多采样纹理才能对重定向的Qt Quick 场景进行多采样渲染,而解析工作则由应用程序或其着色器完成。启用后,Qt Quick 现在会自动创建中间多采样纹理作为色彩缓冲,并自动解析到应用程序提供的非多采样纹理。这样就可以使Qt Quick 渲染目标纹理,这些纹理由外部引擎、框架或 API(如 OpenXR)提供,而这些外部引擎、框架或 API 只提供并消耗非多重采样纹理。
- 在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或任何控件样式的文档。这些类型属于私有 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 :一个可用于直接渲染矢量图形的组件Qt Quick ,具有硬件加速功能,无需预光栅化。它目前支持 SVG 格式(
SVG Tiny 1.2
profile 的静态子集)。
Qt XMLShader Tools 模块
- 完成了对与多视图渲染兼容的着色器的支持。为Qt XMLShader Tools 构建系统集成添加了
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() 现在有了无参数重载,以支持常见的 "fail-on-any-warning "情况,而无需构建匹配一切的正则表达式。
- QSignalSpy 不再继承于 。如果您的代码使用了 is-a 这一事实,则需要重新设计。QObject QSignalSpy QObject
- 当连接失败时,QSignalSpy::signal() 方法不再一定返回空字节数组。使用现有的isValid() 方法来确定给定的QSignalSpy 对象是否监听了有效对象上的有效信号。
- QCOMPARE_xx 宏现在只能查找QTest::toString() 扩展,这些扩展要么是通过相关类型的参数依赖查找(Argument Dependent Lookup)找到的,要么是QTest::toString<T>() 模板的实例化。这与QCOMPARE() 宏的行为一致。
Qt WebEngine 模块
- QWebEngineFrame 新增用于特定框架的 API,例如在特定框架上运行 javascript 或打印特定框架。
- QWebEngineClientHints 添加了客户端提示 DOM api,以更好地控制浏览器对网页的识别。
- QWebEnginePermission 添加了管理新的和现有网站权限的功能。 中现有的权限 API 已被弃用,取而代之的是 QWebEngineProfile::getPermission() 和 QWebEngineProfile::listPermissions()QWebEnginePage
- 添加了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 时减少了重复报告。
- .qhp 文件现在可(正确)包含在没有相关
\group
文档时使用\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 现在只使用
translate="no"
来装饰指向 API 实体的链接。 - 减少了多项目文档构建时的名称碰撞。这可能会影响某些配置中生成的文件名。
- 现在可以使用新的
\qtcmaketargetitem
命令指定 CMake 目标。 - 删除了对下标函数参数的支持。该功能未被记录、未被使用,而且错误百出。移除该功能可省去在每个已记录的函数签名和
\a
命令参数上构建和尝试匹配正则表达式的过程。 - 指向函数签名的链接现在在外观上更加一致。
- QDoc 现在支持在 QML 文档中从 C++ 枚举自动生成值。
outputprefixes
和outputsuffixes
配置变量现在适用于 C++ 类型文档以及 QML 类型和模块文档。这在两个或更多模块定义相同类型名称的多模块文档配置中非常方便。
平台变更
桌面平台
基于 Arm 的桌面
- 现在,您可以在基于 Arm 的 Windows 桌面上构建和开发 Qt 和 Qt 应用程序。
- 现在,您可以在基于 Arm 的 Linux 桌面上构建和开发 Qt 和 Qt 应用程序。
Windows
- 更改字体系统,将 DirectWrite 用作默认后端。这将启用一些传统 GDI 后端无法提供的现代功能。以前的后端仍然可用,可以通过将
fontengine=gdi
作为参数传递给 QPA 插件来启用。
macOS
- 已添加对 macOS 15 的支持
- 添加了对安全区域边距的支持,既支持全屏应用程序中的相机凹槽,也支持内容扩展到标题栏的窗口。
- 通过显示带有事务的金属层,修复了调整Qt Quick 窗口大小时的闪烁问题。
- 在调整Qt Quick 窗口大小时启用运行动画。
- 采用新的 NSCursor API,用于调整窗口框架大小的光标
- 实施了 NSServicesMenuRequestor 协议,以支持服务菜单和编写工具。
Linux 上的 Wayland 客户端
- 添加了在 GNOME 上使用的新窗口装饰风格,并使用与 GNOME 相似的样式。
- 对话框的模态状态现在通过新的xdg-dialog-v1 协议转发给合成器。
- 显示窗口现在也会请求合成器激活(设置了Qt::WA_ShowWithoutActivating 时除外)。
- 已为 qtwaylandscanner 添加支持,以便为空值QString 发送空值。
- 为qt6_generate_wayland_protocol_client_sources添加了
PUBLIC_CODE
和PRIVATE_CODE
选项,用于控制传递给wayland-scanner
的选项。 - 在Qt Multimedia 中通过 XDG 桌面门户使用 ScreenCast 服务实现了屏幕捕获功能。
移动平台
安卓
- 将最低支持版本提升至 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 。
- 已添加对从服务嵌入 QML 的支持。
iOS
- 已添加对 iOS 18 的支持
- 修正了通过QScreen::orientation() 错误报告 UIDevice.currentDevice.orientation 的问题。
- 改进了无障碍集成。
视觉操作系统
- 添加了对 visionOS 的初步支持。
嵌入式平台
QNX
- 作为技术预览版添加了对 QNX 8.0 的支持。
- QNX 8.0 不支持多媒体,请使用
-skip qtmultimedia
进行配置。
VxWorks
- 已添加 VxWorks 24.03 支持。
Boot to Qt
- 添加了对 Yocto 5.0 (Scarthgap) 的支持。
- 更新了 "目标硬件支持级别",新增了 1 级支持的板卡:
- Raspberry Pi 5。
- 目标硬件支持级别更新了第 2 级新支持的板卡:
- 英伟达 Jetson AGX Orin 开发套件(从第 3 级升级)。
- Raspberry Pi 4 64 位(从第 1 级降级)。
- 目标硬件支持级别已更新,新增了第 3 级支持的板卡:
API 变更列表
这些页面概述了 Qt 6.8 中的 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.