
Qt 6.10 llega 为应用程序开发人员和设备制造商提供了大量改进,新功能涵盖可访问性和界面设计到音频、图形和平台支持。 这是一个让日常生活更轻松的版本 无论您使用 QML 和 Qt Quick 还是继续使用 C++ 和 Qt Widgets。
除了标题之外,还有一些变化直接影响生产力:Qt Quick 中类似 flexbox 的布局系统、扩展的矢量动画(SVG 和 Lottie)、SearchField 等新控件,以及将 C++ 数据连接到 QML 接口的更简洁的方法。 Android、macOS/iOS、Windows 和 Linux 也取得了进步,以及 Qt Graphs、Qt Quick 3D、Qt Multimedia 或 Qt Core 等模块中的大量小细节。
Qt 6.10 中的可访问性和高对比度
可访问性有了显著的飞跃: Qt 内置样式现在尊重 自动调整桌面和移动设备上的系统高对比度设置。这有助于保持与环境其他部分的视觉一致性,并无需额外工作即可遵守法规。
Qt 小部件和 Qt Quick 控件向辅助技术(例如屏幕阅读器)展示的方式已经修改, 与底层平台更好地集成WebAssembly 的进展尤其显著,其中许多改进也将在即将到来的维护更新中出现在 LTS 分支中。
Qt 6.10 构建界面更快
Qt Quick 不断发展,以加快迭代速度、减少自定义代码并实现现代化、响应式的 UI。6.10 首次推出 新的弹性盒布局,矢量动画支持得到扩展,并出现了一个可立即使用的 SearchField 控件。
Qt Quick 的 Flexbox 布局
FlexboxLayout 作为“技术预览”被纳入,该系统受到 CSS 的灵活框布局的启发,并与 Qt Quick 的布局机制集成(包括附加属性 配置每个项目的行为)。它旨在在几分钟内编写响应式界面并在运行时保持稳定的性能。
Qt 已经为自适应界面提供了几种布局,但使用 FlexboxLayout 可以更轻松地适应不同的屏幕尺寸/方面,并且 缓解文本长度变化 由于国际化或排版偏好。
动画矢量图形:SVG 和 Lottie
经过几个版本加强对矢量图形的支持(Qt Quick Scene Graph、Qt Quick Shapes 和 SVG 改进),在 6.10 中添加了 支持矢量动画 在 SVG 和 Lottie 图像中均可使用。Qt Lottie 模块扩展了支持的现代文件范围,并且借助 VectorImage,可以将 Lottie 渲染为可扩展的硬件加速矢量图像。
此外,还加入了 lottietoqml 工具,用于将 Lottie 文件转换为 Qt Quick 场景 直接在 QML 中,补充 svgtoqml 开创的流程。
新的 Qt Quick 控件:SearchField
SearchField 是一个专门用于搜索的输入字段,具有内置样式和 主要平台上的原生外观。它会在您键入时在过滤的下拉列表中显示相关建议,并由您可以通过标准 QML 数据路径提供的模型提供支持。
这部分内容与 C++ 代码和 Qt Quick UI 之间数据交换的改进非常契合:6.10 中的新功能使 更容易连接 C++ 模型 使用 SearchField 等控件,无需借助冗长的模板。
借助 Qt 6.10,您可以更轻松地将数据集成到 QML 中
Qt 提供了多种将 C++ 逻辑与 QML 表示(单例、QAbstractItemModel、上下文属性、QObject 对象等)耦合的机制,以及以下工具: Qt 创造者 8。然而,建立完整的双向一体化可能需要 重复代码太多在 Qt 6.10 中,通过为实际工作设计的新 API 和类型降低了这一障碍。
QRange模型
QRangeModel 来了,它是 QAbstractItemModel 的轻量级实现,用于将 C++ 范围公开为 std::vector、std::array 或任何可迭代容器 直接在 Widgets 和 QML/Qt Quick 视图中使用。它支持简单值(例如 int)和更复杂的类型(Q_GADGET 或 std::tuple),无需手动编写模型即可生成合适的角色。
如果您使用小工具,QRangeModel 会将每个属性公开为命名角色,以便 QML 委托可以 具有所需属性的链接 以一种类型化的方式。实际上,您无需手动管理角色或滥用上下文属性,并且所有内容都与编译后的 QML 兼容。
delegateModelAccess:直接从委托中写入
到目前为止,要从委托写入模型,通常需要模型对象或使用上下文属性。在 6.10 中,只需激活 ReadWrite 模式下的 delegateModelAccess 以便代表可以自然地写入所需的属性。
新功能适用于所有 Qt 视图:Instantiator、Repeater、ListView、GridView、TableView、TreeView、MapItemView 和 Repeater3D。 编写可编辑的 UI 这使得它更加可预测并且与良好的 QML 实践保持一致。
同步器:多个属性的同步
多年来一直备受期待的同步器元素首次亮相,旨在确保 多个属性具有相同的值 尽可能地,而不会破坏其中任何链接。绑定过去通常与信号处理程序结合使用,这对于用 C++ 实现的控件最有效。
使用同步器,一切都简化为一个元素, 支持 n 个属性 以及 C++ 和 QML 目标平台。它在 Qt.labs.synchronizer 模块中可用,并以技术预览版的形式发布。
QML 中的 TreeModel
将树形数据暴露给 Qt Quick 过去需要实现 QAbstractItemModel。QRangeModel 简化了 C++ 的这一过程,但有时你需要 直接在 QML 中声明树 适用于原型或小型数据集。这正是 QML TreeModel 类型的用武之地。
使用 TreeModel,您可以使用 JSON 样式数组和字典语法定义节点,为每个项目分配键值对,并在 TreeView 等视图中使用它们,而无需编写复杂的基础结构。 允许您迭代 UI 如果需要的话,在将结构移植到 C++ 之前,可以高速进行。
QML 中的 SortFilterProxyModel
在 C++ 方面,我们多年来一直在使用 QSortFilterProxyModel。Qt 6.10 将其声明式对应模型引入 QML,用于 对数据进行排序和过滤 具有绑定友好的 API。它包括基于角色的排序器(例如 RoleSorter)和响应式函数过滤器(您可以覆盖),以使列表和表格保持最新。
这个想法是,你可以直接在 QML 中编写排序和过滤管道, 简洁且富有表现力的代码,而不会牺牲性能或清晰度。
使用 Qt 6.10 让您的产品保持现代化
随着系统不断发展,用户希望他们的应用能够在最新的设备和版本上运行。在 6.10 中, 令人兴奋的平台改进 这有助于实现这种连续性,正如 Qt 衍生项目所示,例如 LXQT 2.0.
Android:当前支持和新工具
Qt 6.10 宣布正式支持 Android 15 和 16,并调整了构建系统并支持 16KB 页面。这将允许您 目标当前硬件 没有任何意外,保持稳定性和性能。
Qt Jenny 1.0 首次亮相,它是一个代码生成器,可以从带注释的 Java 类生成 JNI 胶水。它由编译器和注释处理器组成,基于 QJniObject 生成 Qt C++ API,以访问诸如 BatteryManager、PowerManager 或 AudioManager 等原生服务。 甚至简化通知,这些通常通过 JNI 实现,非常复杂。它在 Maven Central 上可用,并在 Qt Creator 和在线文档中附带示例。
自 Android 12 以来,启动画面的处理也得到了改进,避免 双欢迎屏幕推荐的方法是使用专用的 SplashActivity,设置具有半透明的主题,并在 Android 准备就绪时启动 Qt Activity,实现无缝过渡。
macOS 和 iOS 26
这是自 macOS 26 “Tahoe” 发布以来的首个次要版本。全新的 Liquid Glass 设计以及渲染架构的变更带来了诸多挑战,而 Qt 已成功解决了这些挑战。 提供全力支持在即将发布的补丁中,许多改进将被移植到 LTS 分支(6.8 和 6.5)。
Windows:带有 WebView2 的 Qt WebView
Qt WebView 集成了基于 WebView2 的实现,使用 Microsoft Edge 作为引擎。这样您就可以 嵌入网页内容 配合系统原生浏览器,无需拖拽Qt WebEngine即可在Windows上部署,减轻占用空间。
Linux 和多媒体
Qt Multimedia 为 PipeWire 添加了原生后端,改进了内容处理和硬件的延迟和控制(例如, 米奇 2.5), 此外 容器化环境中的支持更薄弱添加音频音调补偿以在加速或减慢音轨时保持质量。
嵌入式硬件
在设备上,Boot to Qt 采用 Yocto 5.2“Walnascar”并出现 适用于 Ezurio 氮气板目标:通过更新的堆栈加快现代硬件的上市时间。
Qt 6.10 中的其他显著改进
Qt Quick 3D 现在允许 轻松烘焙光照贴图 通过高性能提高质量,并反向运行粒子效果,有助于模拟雨或雪对模型的影响。
Qt Graphs 增加了新的填充表面、更好的多轴支持、可定制的 2D z 顺序以及选项 渲染 3D 图形的切片 可打印的图像。目录中还添加了一个新的填充表面图形。
在 Qt Widgets 中,创建 自定义委托 它更易于使用,并且在项目视图中提供更精细的拖放控制。布局允许您单独配置尺寸限制。
虚拟键盘现在包括 拉脱维亚分布,扩大了语言覆盖范围。在 Qt Core 中,API 也得到了改进,可以处理语言环境、XML 文档和连续字符串。
在 Qt GUI 中,QRhi 后端添加了 3D 适配器枚举 当使用 Direct3D 11/12 或 Vulkan 时,可以更轻松地在多卡机器上选择 GPU。
已经介绍 性能提升 在 QGrpcHttp2Channel 中,这有利于在苛刻的场景中使用基于 HTTP/2 的 gRPC 的应用程序。
关于 Qt 6.10 的更多信息
Wayland 收到 会话管理,这是现代桌面集成的关键组件,并且为合成器(例如 KWin)等组件添加了有用的图形重置通知。
Qt WebEngine 包含对 Chromium 扩展这是基于 QtWebEngine 的浏览器用户的长期需求。这为 Falkon 等项目打开了大门,使其能够使用 Chromium 中已有的扩展生态系统。
除了 VectorImage 中直接支持 Lottie 之外,该工具 lottietoqml 简化 将动画带入 QML 世界,在不牺牲性能的情况下扩展您的创意库。
Qt 6.10 是朝着开发更易于访问和更现代化的界面迈出的重要一步,它能够更轻松地将 C++ 数据集成到 QML 中,并无缝部署到最新平台,同时还添加了实用的多媒体、图形和核心功能,这些功能在性能和最终产品质量上都有所体现。 如果你的堆栈中有 Qt,此更新值得在您的路线图上占有一席之地。