Qt 6.9发布

Qt 6.9 Released

Qt 6.9发布

April 02, 2025 by Volker Hilsheimer | Comments

​2025年4月2日 由Volker Hilsheimer发表|评论

Qt 6.9 is now available, with new features and improvements for application developers and device creators! As some of the highlights, upgrading to Qt 6.9 brings emoji rendering in existing applications up to the latest standards, order independent transparency for Qt Quick 3D, significant enhancements to address modern OAuth2 requirements, and multiple new performance features across all platforms and devices.

Qt 6.9现已推出,为应用程序开发人员和设备创建者提供了新功能和改进!作为一些亮点,升级到Qt 6.9使现有应用程序中的表情符号呈现达到最新标准,Qt Quick 3D的顺序独立透明度,满足现代OAuth2要求的重大增强,以及所有平台和设备的多种新性能功能。

Otherwise, API additions and new features across the board bring increased flexibility and productivity.

除此之外,API的添加和全面的新功能带来了更高的灵活性和生产力。

Check out the highlights here:

查看这里的亮点:

https://youtu.be/fsiCkxTesok

More Visualizations with Qt Graphs

Qt图形的更多可视化

Rendering of 3D graphs has become more powerful, with support for transparency in Surface3D, a QSpline3DSeries to render data in 3D splines, and more customization options for charts, axis, and labels. Injecting a graph into a View3D from Qt Quick 3D is now easy and allows for very expressive visualization of data in a 3D context.

随着Surface3D对透明度的支持,3D图形的渲染变得更加强大,Surface3D是一个用于在3D样条中渲染数据的QSpline3D系列,以及图表、轴和标签的更多自定义选项。从Qt Quick 3D将图形注入View3D现在很容易,并允许在3D环境中对数据进行非常富有表现力的可视化。

Input handling in 2D charts can now be easily customized, and QGraphsView can be configured with a plotArea for granular positioning of the rectangle the graph will be rendered into.

 

Read more about the improvements in Qt Graphs in Owais' blog post about What's New in Qt Graphs 6.9 .


在Owais的博客文章《Qt Graphs 6.9的新增功能》中阅读更多关于Qt Graphs的改进。

Improved Emoji-Handling

改进了表情包处理

Emoji is one of the world's most popular writing systems, and it's also an evolving domain. A few things have happened since we added support for color fonts in Qt 5.2, and with Qt 6.9 we are catching up.

表情符号是世界上最流行的书写系统之一,也是一个不断发展的领域。自从我们在Qt 5.2中添加了对彩色字体的支持以来,发生了一些事情,而在Qt 6.9中,我们正在迎头赶上。

Qt now detects emoji sequences in text, and uses the correct color font as needed, according to the Unicode specification. Application developers have control over this process: the parsing can be disabled, the emoji segmenter can be completely left out when building Qt from source, and QFontDatabase has new API to select a specific font family for emoji. The font formats supported for emoji now include CBDT and COLRv1, which provide scalable rendering at high quality across platforms.

Qt现在检测文本中的表情符号序列,并根据Unicode规范根据需要使用正确的颜色字体。应用程序开发人员可以控制这个过程:解析可以被禁用,从源代码构建Qt时可以完全忽略表情符号分割器,QFontDatabase有新的API为表情符号选择特定的字体系列。表情符号支持的字体格式现在包括CBDT和COLRv1,它们提供跨平台的高质量可扩展渲染。

  • Emoji using a colrv0 font

  • 使用colrv0字体的表情符号

  • Emoji using a colrv1 font

  • 使用colrv1字体的表情符号

 

Read Eskil's blog post for a detailed tour through the history of emoji and support in Qt 6.9.

​阅读Eskil的博客文章,详细了解表情符号的历史和Qt 6.9中的支持。

Expanded Client Areas and Safe Areas

扩大客户区和安全区

A staple of modern application design on desktop and mobile is that the content is front and center — with application and system UI elements seamlessly blending into the content in non-intrusive ways. In Qt 6.9 we've introduced new APIs to support this use-case, via the Qt.ExpandedClientAreaHint window flag, and the SafeArea attached property in Qt Quick. In conjunction, these APIs enable the application content to occupy the entire window or screen edge-to-edge, while simultaneously being mindful of crucial system UI elements.

桌面和移动设备上现代应用程序设计的一个主要特点是内容是前沿和中心——应用程序和系统UI元素以非侵入性的方式无缝地融入内容中。在Qt 6.9中,我们通过Qt引入了新的API来支持这个用例。ExpandedClientAreaHint窗口标志,以及Qt Quick中的SafeArea附加属性。结合使用,这些API使应用程序内容能够占据整个窗口或屏幕的边缘,同时注意关键的系统UI元素。

 

Read Tor Arne's blog post for additional details about this new feature.

​阅读Tor Arne的博客文章,了解有关此新功能的更多详细信息。

SVG CSS animations

SVG CSS动画

Qt's SVG support now includes a first implementation of CSS animations for color, fill, stroke, and transform properties. This is supported in the Qt SVG module when rasterizing an SVG into a sequence of pixmaps, and in the VectorImage element that was introduced in Qt 6.8. With VectorImage, animated SVGs can now be rendered directly into the Qt Quick scene graph.

Qt的SVG支持现在包括用于颜色、填充、笔划和变换属性的CSS动画的第一个实现。当将SVG光栅化为一系列位图时,Qt SVG模块和Qt 6.8中引入的VectorImage元素都支持这一点。使用VectorImage,动画SVG现在可以直接渲染到Qt Quick场景图中。

 

Rendered by your browser

Rendered by Qt

 

Performance features

性能特性

With each Qt release we focus on making it easier to build performant applications across all platforms and devices. This includes making improvements to our code, but also adding support for new features that have become available from the platforms or graphics subsystems.

随着Qt的每次发布,我们都致力于使跨所有平台和设备构建高性能应用程序变得更加容易。这包括对我们的代码进行改进,但也增加了对平台或图形子系统中可用的新功能的支持。

Many modern CPU architectures include both performance and efficiency cores, and QThread can now set a preference for the kind of CPU core the work should be executed on.

​许多现代CPU架构都包括性能和效率内核,QThread现在可以设置应该在哪种CPU内核上执行工作的偏好。

Users of QQuickPaintedItem on OpenGL platforms can use FramebufferObject as a rendering mode again, benefiting from hardware accelerated, imperative painting.

​OpenGL平台上QQuickPaintedItem的用户可以再次使用FramebufferObject作为渲染模式,受益于硬件加速的命令式绘制。

The OpenGL ES RHI backend now utilizes extensions for multisampled rendering when available, boosting the rendering performance for Qt Quick and Qt Quick 3D HMIs on modern GPU architectures.

OpenGL ES RHI后端现在利用扩展进行多采样渲染,提高了现代GPU架构上Qt Quick和Qt Quick 3D HMI的渲染性能。

On Windows, the Direct 3D RHI backend drives updates through a dedicated vblank watcher thread, which reduces CPU load and latency. This gives interactive UIs a much better response, for example when dragging items by mouse or touch.

在Windows上,Direct 3D RHI后端通过专用的vblank观察线程驱动更新,从而减少了CPU负载和延迟。这为交互式UI提供了更好的响应,例如在通过鼠标或触摸拖动项目时。

On RHI backends except OpenGL, our RHI abstraction now supports variable rate shading, which enables dynamic foveation support with Qt Quick 3D XR on visionOS.

在除OpenGL之外的RHI后端上,我们的RHI抽象现在支持可变速率着色,这使得在visionOS上使用Qt Quick 3D XR支持动态中心凹。

The new RectangularShadow element for Qt Quick, and improved control over shadow map bounds in Qt Quick 3D, allow UI developers to optimise the use of shadow and glow effects and to avoid expensive calculations.

​Qt Quick的新矩形阴影元素以及Qt Quick 3D中对阴影贴图边界的改进控制,使UI开发人员能够优化阴影和光晕效果的使用,并避免昂贵的计算。

Widget applications using Qt's item views can tune the performance when using models where a lot of data changes at once, and the memory usage of QHeaderView has been optimised dramatically as long as resizing and reordering of sections is disabled.

​使用Qt项目视图的Widget应用程序可以在使用大量数据同时发生变化的模型时调整性能,并且只要禁用部分的大小调整和重新排序,QHeaderView的内存使用就得到了极大的优化。

Order Independent Transparency

无序透明度

Qt Quick 3D now supports Order Independent Transparency, which allows rendering of transparent objects without needing to manually sort the geometry by depth before rendering them. While it comes with some computational and RAM cost, it removes visual errors caused by improper sorting, especially when objects overlap each other. We are already using this technique in Qt Graphs for rendering semi-transparent surface graphs, but it can be used with any model, including instancing.

Qt Quick 3D现在支持独立于顺序的透明度,这允许渲染透明对象,而无需在渲染之前手动按深度对几何体进行排序。虽然它带来了一些计算和RAM成本,但它消除了因排序不当造成的视觉错误,尤其是在对象相互重叠时。我们已经在Qt Graph中使用了这种技术来渲染半透明曲面图,但它可以用于任何模型,包括实例化。

  • Without OIT

  • With OIT

In Qt 6.9, we support the Weighted Blended technique, which provides a good tradeoff between cost, performance, and accuracy.

在Qt 6.9中,我们支持加权混合技术,该技术在成本、性能和准确性之间实现了良好的权衡。

Revitalized Connectivity

重振互联互通

In Qt 6.8, and now in Qt 6.9, the Qt Network Authorization module introduces significant enhancements to address modern OAuth2 requirements. Notably, it adds support for the Device Authorization Grant, facilitating user authentication on devices with limited input capabilities such as TVs and IoT devices. Additionally, it introduces basic functionality for retrieving ID tokens in OpenID Connect, enabling applications to access user identity information. The module now allows a use alternative browser user-agents, incl. the use of Qt WebEngine, for authentication, and so providing greater flexibility. To improve token management, a new signal alerts when an access token is nearing expiration, and automatic token refreshing can be enabled. Furthermore, the module distinguishes between requested and granted scopes, ensuring applications can accurately adjust their behavior based on the permissions granted by the user.

​在Qt 6.8和现在的Qt 6.9中,Qt网络授权模块引入了显著的增强功能,以满足现代OAuth2的要求。值得注意的是,它增加了对设备授权授权的支持,方便了在电视和物联网设备等输入能力有限的设备上进行用户身份验证。此外,它还介绍了在OpenID Connect中检索ID令牌的基本功能,使应用程序能够访问用户身份信息。该模块现在允许使用替代浏览器用户代理,包括使用Qt WebEngine进行身份验证,从而提供了更大的灵活性。为了改进令牌管理,当访问令牌接近到期时,会有一个新的信号发出警报,并且可以启用自动令牌刷新。此外,该模块区分了请求和授予的范围,确保应用程序可以根据用户授予的权限准确调整其行为。

Read Juha's blog post for all the details about what's new in Qt Network Authorization.

​阅读Juha的博客文章,了解Qt网络授权的所有新细节。

Even though the Qt HTTP Server is provided to run in a trusted environment, we still spent some extra effort to harden it. The maximum number of incoming requests can now be configured through the QHttpServerConfiguration type, allowing protection against Denial-of-Service attacks, brute-force hacking, or scraping. HTTP/2 clients can control the maximum number of concurrent streams in the QHttp2Configuration.

尽管Qt HTTP服务器是为在可信环境中运行而提供的,但我们仍然花费了一些额外的努力来加强它。现在可以通过QHttpServerConfiguration类型配置传入请求的最大数量,从而防止拒绝服务攻击、暴力破解或抓取。HTTP/2客户端可以控制QHttp2Configuration中并发流的最大数量。

Qt Quick Developer Experience

Qt Quick开发体验

Developer using Qt Quick will benefit from better tooling and new features. The QML Language Server now offers an outline view, enabling IDEs and editors to display a hierarchical representation of a QML document’s structure. This includes objects, properties, and methods.

使用Qt Quick的开发人员将受益于更好的工具和新功能。QML语言服务器现在提供了一个大纲视图,使IDE和编辑器能够显示QML文档结构的层次表示。这包括对象、属性和方法。

A new ContextMenu component allows developers to easily attach context menus to items, which open on platform-specific events like right-clicks. Additionally, TextField and TextArea now provide a default context menu unless a custom one is specified.

一个新的ContextMenu组件允许开发人员轻松地将上下文菜单附加到项目上,这些项目在特定于平台的事件(如右键单击)上打开。此外,除非指定了自定义上下文菜单,否则TextField和TextArea现在提供默认上下文菜单。

Finally, a Metal backend has been added for OpenXR, allowing applications to run in the Meta XR Simulator on macOS.

最后,为OpenXR添加了Metal后端,允许应用程序在macOS上的Meta XR模拟器中运行。

Upgrade to Qt 6.9

升级到Qt 6.9

Qt 6.9 adds many improvements and new features on top of the current Qt 6.8 LTS release. Qt 6.9 provides binary and source compatibility with all previous Qt 6 releases. With the extensive testing of our beta packages and the feedback provided by many of you, we are confident that upgrading to Qt 6.9 to take advantage of these improvements will be seamless. For a complete list of new APIs, see our documentation. A big thank you goes out to all contributors! You can find a full list of all community members that landed a patch to the Qt source code at the end of the release notes.

​Qt 6.9在当前Qt 6.8 LTS版本的基础上增加了许多改进和新功能。Qt 6.9提供了与所有先前Qt 6版本的二进制和源代码兼容性。通过对我们测试包的广泛测试和你们许多人提供的反馈,我们相信升级到Qt 6.9以利用这些改进将是无缝的。有关新API的完整列表,请参阅我们的文档。衷心感谢所有贡献者!可以在发行说明末尾找到所有社区成员的完整列表,这些成员为Qt源代码安装了补丁。

Still on Qt 5?

还在Qt 5上吗?

Standard commercial support for Qt 5.15 will end after the 26th of May 2025. After the support period, the release will be in EoS (End of Support) state and will only be supported through additional services, including the Extended Security Maintenance for Qt 5.15 (ESM).

Qt 5.15的标准商业支持将于2025年5月26日结束。支持期结束后,该版本将处于EoS(支持结束)状态,并且仅通过其他服务提供支持,包括Qt 5.15的扩展安全维护(ESM)。

Read more about Qt 5.15 End of Standard Support and ESM.

​阅读更多关于Qt 5.15终止标准支持和ESM的信息。

Try Qt 6 online

在线试用Qt 6

You can now try Qt 6 on your browser - no installation needed. Simply browse to try.qt.io and start exploring!

​现在可以在浏览器上尝试Qt 6,无需安装。只需浏览try.qt.io并开始探索!

Coming soon: Qt 6.9 for Python

马上就来:Qt 6.9 for Python

Looking for Qt for Python updates? There will be a separate blog post with news and highlights from this release. Qt for Python 6.9 is available now as well!

​正在寻找Qt的Python更新?将有一篇单独的博客文章,其中包含本次发布的新闻和亮点。Qt for Python 6.9现已发布!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值