Qt 6.9现已全面推出,为应用开发者和设备制造商带来诸多新特性与改进!
作为亮点之一,升级至Qt 6.9可将现有应用的Emoji渲染提升至最新标准,支持Qt Quick 3D的无序透明渲染(Order Independent Transparency),大幅增强对现代OAuth2需求的适配能力,并在全平台设备上新增多项性能优化功能。
此外,新增的 API 和新功能也全面提高了开发灵活性和工作效率。
核心亮点速览:
1. Qt Graphs: 更强大的可视化效果
3D图表渲染能力显著增强,新增对Surface3D透明度的支持,引入QSpline3DSeries以渲染3D样条数据,并提供更多图表、坐标轴与标签的自定义选项。现在,将图表嵌入Qt Quick 3D的View3D中变得轻而易举,从而在3D场景中实现极具表现力的数据可视化。
2D图表的输入处理现已支持灵活自定义,QGraphsView可配置plotArea以精细控制图表渲染的矩形区域,细化图形渲染矩形的定位。
请阅读博客《Qt Graphs 6.9新功能详解》,深入了解Qt Graphs的改进。
2. Emoji处理能力升级
Emoji是全球最流行的书写系统之一,且其规范持续演进。自Qt 5.2添加彩色字体支持以来,Emoji领域已发生诸多变化,Qt 6.9正迎头赶上。
Qt现能自动检测文本中的Emoji序列,并根据Unicode规范按需选用正确的彩色字体。开发者可对此过程进行控制:禁用解析、在源码编译时完全排除Emoji分割器,或通过QFontDatabase的新API为Emoji指定特定的字体系列。目前Emoji支持的字体格式包括CBDT 和COLRv1,可实现跨平台高质量缩放渲染。
左:COLRv0,右:COLRv1
请阅读博客,纵览Emoji发展史及Qt 6.9的支持详情。
3. 扩展的客户端区域和安全区域
现代桌面和移动设备上应用设计的核心理念是内容至上——应用与系统UI元素以非侵入方式无缝融入内容。Qt 6.9通过Qt.ExpandedClientAreaHint窗口标志及Qt Quick的SafeArea附加属性引入新API,支持此类设计需求。结合使用这些API,应用内容可充满整个窗口或屏幕边缘,同时避开关键系统UI元素。
请阅读博客,获取此新功能的更多细节。
4. SVG CSS动画
Qt的SVG模块现已在SVG光栅化为像素图序列时,支持对颜色、填充、描边和形变的CSS动画的初步实现。同时,Qt 6.8中引入了VectorImage ,借助VectorImage,动画SVG现在可以直接渲染到Qt Quick场景图中。
由浏览器渲染
由 Qt 渲染
5. 性能优化特性
每个Qt版本均致力于简化跨平台设备的性能优化应用开发。除代码改进外,Qt 6.9新增对平台或图形子系统新特性的支持。
现代CPU架构普遍包含性能核与能效核,QThread现在可以设置执行任务时偏好的CPU核心类型。
在支持OpenGL平台上使用QQuickPaintedItem的用户可以再次使用FramebufferObject作为渲染模式,从而在硬件加速和命令式绘制阶段受益。
OpenGL ES RHI后端在可用时会利用多重采样渲染扩展,提升现代GPU架构上Qt Quick与Qt Quick 3D HMI的渲染性能。
在Windows平台上,Direct 3D RHI后端通过专用的垂直同步监视线程(vblank)驱动刷新,降低CPU负载与延迟。显著改善拖拽等UI交互操作的响应速度。
除OpenGL外,其他RHI后端现支持可变速率着色(Variable Rate Shading),为visionOS上的Qt Quick 3D XR提供动态注视点渲染支持。
Qt Quick新增的RectangularShadow元素以及Qt Quick 3D中阴影贴图边界控制的改进,使UI开发人员能够优化阴影和光晕效果的使用,避免高昂计算开销。
使用Qt项视图(Item Views)开发的Widget应用程序可以在处理数据频繁批量变更的模型时进行调优性能;而且只要禁用段的大小调整(resizeSection)和重新排序,QHeaderView的内存占用就会得到显著优化。
6. 无序透明渲染(Order Independent Transparency)
Qt Quick 3D现在支持 "无序透明渲染"(Order Independent Transparency),无需手动按深度排序透明物体即可渲染。虽然这需要一定的计算和内存成本,但可消除因排序不当(尤其是物体交叠时)而导致的视觉错误。我们已经在Qt Graphs中使用这种技术来渲染半透明表面图,但其同样适用于任何模型(包括实例化)。
Qt 6.9支持加权混合(Weighted Blended)技术,在成本、性能与精度间实现良好平衡。
7. 连接功能焕新
在Qt 6.8以及Qt 6.9中,Qt网络授权(Qt Network Authorization)模块显著增强以满足现代OAuth2需求。值得注意的是,它增加了对 "设备授权许可"(Device Authorization Grant)的支持,便于输入能力受限设备(如电视与IoT设备)的用户认证。引入OpenID Connect中获取ID令牌的基础功能,使应用能访问用户身份信息。现在,该模块允许使用其他浏览器用户代理(包括使用Qt WebEngine)进行身份验证,提供更高灵活性。为优化令牌管理,新增访问令牌临近过期的信号提醒,并支持自动刷新令牌。此外,该模块还能区分请求域和授权域,确保应用能基于用户授权权限精准调整行为。
请阅读博客, 了解Qt Network Authorization新功能的完整细节。
尽管Qt HTTP Server设计用于可信环境,我们仍额外强化其安全性。现在可以通过QHttpServerConfiguration类型配置传入请求的最大数量,从而防止DoS (Denial-of-Service) 攻击,暴力破解攻击或爬虫攻击。HTTP/2客户端可通过QHttp2Configuration控制并发流的最大数量。
8. Qt Quick开发者体验
Qt Quick开发者将受益于更佳工具支持与新功能。QML语言服务器现提供大纲视图,助力IDE与编辑器展示QML文档结构的层次化呈现(包括对象、属性与方法)。
新增ContextMenu组件,开发者可轻松地将上下文菜单附加到项目上(响应右键点击等平台特定事件)。此外,TextField与TextArea现提供默认上下文菜单(除非指定自定义菜单)。
最后,OpenXR新增了Metal后端支持,允许应用在 macOS上的Meta XR模拟器中运行。
9. 升级到Qt 6.9
Qt 6.9在现有Qt 6.8 LTS版本基础上新增诸多改进与特性,保持与所有Qt 6版本的二进制与源码兼容性。经过Beta包广泛测试与大量用户反馈,我们确信升级至Qt 6.9以利用这些改进将顺畅无阻。有关新的API的完整列表,请参阅我们的文档。衷心感谢所有贡献者!您可以在发布说明(https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.9.0/release-note.md)的末尾查看为Qt源代码提供补丁的所有社区成员的完整名单。
10. 仍在使用Qt 5?
Qt 5.15的标准商业支持将于2025年5月26日结束。支持期结束后,该版本将进入EoS(支持终止)状态,仅通过Qt 5.15扩展安全维护(ESM)等附加服务提供支持。
了解有关Qt 5.15标准支持终止和ESM的更多信息。
11. 在线试用 Qt 6
现可通过浏览器直接体验Qt 6,无需安装。只需浏览try.qt.io即刻探索!
12. 针对Python的Qt 6.9
期待Qt for Python更新?Qt for Python 6.9也已发布!
原文:https://mp.weixin.qq.com/s/TWVjq768sQukRl6evbFRdQ