Qt 6.7 新特性

Qt 6.7 新特性

Qt 核心模块

  • 增加了 QSpan,Qt 对 C++20 std::span 的重实现。
  • 增加了 Qt::strong_orderingQt::weak_orderingQt::partial_ordering 类,这是 C++17 兼容的 std::*_ordering 类的实现。
  • 增加了方便在 Qt 类中实现关系操作符的宏。这些宏在 C++20 构建中提供了操作符 <=>(),并在 C++17 构建中回退到所有六个关系操作符。
  • 将这些宏应用于 QDateQTimeQDateTimeQTimeZoneqfloat16 类。
  • 增加了新的类 QAtomicScopedValueRollback
  • 增加了 Qt::Key_micro 以最终取代重命名的 Key_mu:它是微符号 U+00B5,而不是希腊字母 mu,U+03BC 或 U+039C。
  • QLocale 的 name()、bcp47Name() 和 uiLanguages() 现在允许调用者指定在名称中的标签之间使用的分隔符。
  • QLocale 现在本地化了(只要可能)格式化日期中的时区部分。
  • 两位数字年份的日期(和日期时间)解析现在允许调用者控制这些年份所在的世纪。
  • QCalendar 现在有 matchCenturyToWeekday(),以支持两位数字年份的解析。
  • QDateTime 现在接受 TransitionResolution 参数,允许调用者控制时区转换的解析方式。现在,时隙中日期时间的默认解析是有效的,但它的 time() 和可能的 date() 现在匹配 toMSecsSinceEpoch() 报告的结果,而不是所请求的结果。

Qt 图表模块

  • 为 3D 图表的数据 API 不需要将每个数据项创建到堆内存中。
  • Bars3DScatter3DSurface3D 图表增加了渲染到图像功能。
  • 删除了一些冗余类,并将所需功能移动到其他地方。
  • 枚举被设置为有限作用域。
  • 其他一些架构和功能更改。
  • 性能和视觉质量改进。
  • 为 2D 图表添加了技术预览,它包含对条形图、折线图和散点图的初始支持。

Qt GRPC 模块

注意:Qt GRPC模块处于技术预览阶段。

Qt GUI模块

Qt多媒体模块

  • FFmpeg多媒体后端现在在Windows上以动态方式链接FFmpeg。通过在线安装程序提供预构建的FFmpeg二进制文件。现在使用FFmpeg后端的应用程序必须使用windeployqt将其二进制文件捆绑为安装程序的一部分。
  • 可以使用新的MediaPlayer::autoPlayVideo::autoPlay属性来自动开始播放,当设置了媒体源时。
  • 根据摄像机相对于其自然方向的实际旋转,为QCameraDevice增加了新的correctionAngle属性。该属性表示需要旋转以补偿摄像机物理旋转的旋转角度。

Qt网络模块

Qt OPC UA模块

Qt Protobuf模块

  • 增加了新的序列化器,它实现了基于类进行JSON序列化和反序列化的功能。
  • 在Qt Protobuf生成器中增加了对“可选”字段的支持。如果消息字段被标记为“可选”,则除了常规的字段方法外,还将有清晰的和有的方法。
  • Qt Protobuf生成器生成的枚举字段现在保留了第一个字母的大小写。以前生成器将枚举字段名改为大写。

注意:Qt Protobuf模块处于技术预览阶段。

Qt QML模块

  • 为QML语言服务器增加了新功能:格式化、语义和代码片段补全、重命名使用情况,以及通过QT_QML_GENERATE_QMLLS_INI设置CMake中的文件生成。
  • 可以通过pragma Translator设置QML文件的翻译上下文。
  • 现在可以在值类型上声明QML_CONSTRUCTIBLE_VALUEQML_STRUCTURED_VALUE,并在QML中从这些类型的对象中构造对象。实际上,从Qt 6.5起就可以这样做了,但现在它已正式支持。

Qt Quick编译器

  • 可以编译写入值类型属性的组合和函数到C++中。
  • 可选链现在可以编译到C++中。
  • for..in迭代现在可以编译到C++中。

Qt Quick模块

  • 为加载文件添加了TextEdit.textDocument.source属性,为写入添加了save()和saveAs()函数,这可以取代文本处理用例中的XMLHttpRequest
  • 为TextEdit和TextArea添加了cursorSelection属性,以便检查和修改所选文本的属性。
  • 更新了文本编辑示例,以演示这些功能。
  • 添加了新的文本渲染器,可以更好地渲染非常大的文本。它可以通过将renderType设置为Text.CurveRendering来选择。
  • 文本类获得了新的API以处理可变字体
  • 矩形现在可以在每个上有不同的半径
  • 为将QWindows嵌入Qt Quick场景添加了初步支持,同时也在Window上设置了父属性,以便设置窗口的可视父对象。
  • 的focusReason和focusPolicy属性移动到中。
  • 添加了QQuickRhiItem,作为现代的QQuickFramebufferObject替代品。这允许创建通过任何由Qt的渲染硬件接口支持的硬件加速图形API(即OpenGL、Vulkan、Direct3D或Metal)渲染3D图形的自定义QQuickItem对象。
  • 添加了一个新的QQuickRenderControl示例,使用了QRhi,因此它是完全可移植的,并且可以与所有支持的3D API一起工作。这显示了如何以跨平台的方式将Qt Quick内容重定向到纹理中。

Qt Quick Controls模块

Qt Quick Shapes模块

  • 现在正式支持曲线渲染器及其相关属性preferredRendererType,它们不再被视为实验性。
  • 为描述形状添加了pathHints属性。这可能被渲染器用来优化路径的处理和渲染。
  • 形状现在具有基于形状边界框的隐式大小,并在布局中适当地定位。添加了fillModehorizontalAlignmentverticalAlignment属性来修改形状的行为,当项被赋予与隐式大小不同的显式大小时。
  • 添加了作为技术预览的工具svgtoqml。这是一个可以将SVG文件转换为QML代码的工具。目前这仍然被视为实验性,且仅支持Qt SVG所支持的部分。

Qt Quick Timeline模块

  • QtQuick.Timeline.BlendTrees子模块添加了新的API,以便实现多个时间线动画的混合。

Qt Quick 3D模块

Qt Quick 3D 物理模块

Qt串行总线模块

  • QCanDbcFileParser添加了一个方法,该方法可以启用使用除UTF-8以外的编码解析DBC文件。

Qt SQL模块

Qt WebEngine模块

Qt Widgets模块

  • 添加了一个QRhiWidget类(处于技术预览中),它可以通过任何Qt的渲染硬件界面支持的硬件加速图形API渲染3D图形,即OpenGL、Vulkan、Direct3D或Metal。
  • QCheckBox 添加了一个新信号 checkStateChanged,以类型安全的方式发出新的选中状态,值为 Qt::CheckState 枚举。
  • QDateTimeEdit 新增了一个 timeZone 属性。
  • 在运行 Windows 11 及以上版本的系统中,默认使用新的 Windows 11 小部件样式。此样式支持 Windows 暗黑模式。

Qt SVG 模块

  • 支持 SVG 1.1 标准的一些元素,包括 Mask、Symbol、Marker、Pattern、Filter 以及 Filter 原语(feMerge、feColorMatrix、feGaussianBlur、feOffset、feComposite、feFlood)。
  • 新增了 QtSvg::Options 标志,用于启用或禁用新元素的渲染。
  • QtSvg::Options 添加了 QSvgRendererQSvgWidget 的设置器和获取器。新功能默认启用。

工具

Qt Designer

  • Qt Designer 现在将完全限定的枚举值写入 .ui 文件,以支持限定枚举值和 Qt for Python。读取这些值的支持已回滚到 6.6.1 和 6.5.4。

平台变更

桌面平台

Windows

macOS

  • macOS 14 现在是受支持的构建和目标平台。

Linux 上的 Wayland 客户端

WebAssembly

  • 添加了拖放支持(拖放)。Qt 现在将在用户将内容拖放到应用窗口时发送拖放事件。
  • OpenGL ES 3 / WebGL2 现在为默认设置,回退到 OpenGL ES2 / WebGL 1。
  • Emscripten 版本更新到 3.1.50

移动平台

Android

  • 重构了 Android 插件 Java 代码,包括
    • 简化架构以及各种类之间的关系(例如,QtActivity、QtActivityLoader 和 QtActivityDelegate 之间的关系)。
    • 将 QtLoader 类从公共绑定包中移除。
    • 移除了反射的使用。
  • 为 Android 添加了初步的子窗口支持,以与 Qt 及其其他 QPA 保持一致。因此,QScreen::grabWindow() 目前临时不受支持。
  • 将 Android 14 设置为最大支持的平台版本,默认平台 SDK 和目标级别为 API 34。
  • 将支持的 Android NDK 版本设置为 r26b (26.1.10909125) 和 JDK 为 17。
  • 将移动类别的示例与 iOS 保持一致。
  • 添加了 QNativeInterface::QAndroidScreen,它提供了访问 QScreen 的 Android 显示 id 的能力。
  • 为使用 ndk-stack 与 androidtestrunner 一起提供了优雅地打印测试崩溃报告的支持。
  • 已添加CMake变量QT_ANDROID_DEPLOYMENT_TYPE,以明确设置Android包的部署类型。
  • 对Qt Android平台文档进行整体重写和更新。
  • 引入功能以利用Qt在Android项目中的优势。

iOS

  • iOS 17现在是一个支持的目标平台。

嵌入式平台

启动至Qt

  • 支持添加了Yocto 4.3(Nanbield)。
  • 支持ARM Linux开发主机。
  • 目标镜像中包含Squish支持。
  • 已更新目标硬件支持级别,包括Tier 3的新支持板。
    • 亚马逊AWS EC2 ARM64
    • NVIDIA Jetson AGX Orin开发者套件
    • NXP i.MX8M Nano LPDDR4 EVK(替代DDR4 EVK变体)
    • 高通机器人RB5开发者套件
    • TI SK-AM69

VxWorks

  • 作为技术预览添加了VxWorks 23.09支持。

构建系统更改

  • Qt C++头现在包含了IWYU工具的元数据。
  • CMake:现在您可以通过设置DEPLOY_TOOL_OPTIONS来调整qt_generate_deploy_app_script()、qt_deploy_runtime_dependencies()中*deployqt工具的参数。
  • CMake:qt_add_library()现在考虑BUILD_SHARED_LIBS变量的值。如果定义了该变量,则在添加库目标时,其在qt_add_library()中检测库类型逻辑的优先级高于库类型。
  • CMake:qt_standard_project_setup()允许您设置应用程序的本地UI语言以及UI翻译到的语言。然后qt_add_translations()调用会生成匹配给定语言的.ts和.qm文件,并为本地语言生成一个仅支持复数的.ts文件。
  • CMake:现在您可以将多个目标传递给qt_add_translations()以从中提取翻译。或者,您可以让qt_add_translations()收集项目的所有目标(通过新的qt_collect_translation_source_targets()函数完成),并且可以有选择地从目录或目标级别排除不需要的目标。
  • CMake:qt_add_translations()不再处于技术预览状态。

WebOS

  • 验证显示,Qt 6.7与LG webOS OSE 2.25.0兼容(Qt for webOS)。

API更改列表

这些页面包含Qt 6.7中API更改的概述。

© 2024 Qt公司有限公司。此处包含的文档贡献者的版权所有。此处提供的文档根据自由软件基金会发布的GNU自由文档许可证版本1.3条款进行许可。Qt及其相关标志是芬兰及/或全球其他国家的Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。