BitBox Cold Wallet
Purchase BitBox Cold Wallet

Qt 6.9 Released

April 02, 2025 by Volker Hilsheimer | Comments 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. Otherwise, API additions and new features across the board bring increased flexibility and productivity. Check out the highlights here: More Visualizations with Qt Graphs 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. 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 . 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 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. Read Eskil's blog post for a detailed tour through the history of emoji and support in 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. Read Tor Arne's blog post for additional details about this new feature. SVG CSS animations 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. 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. 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. Users of QQuickPaintedItem on OpenGL platforms can use FramebufferObject as a rendering mode again, benefiting from hardware accelerated, imperative painting. 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. 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. 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. 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. 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. 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. In Qt 6.9, we support the Weighted Blended technique, which provides a good tradeoff between cost, performance, and accuracy. 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. Read Juha's blog post for all the details about what's new in Qt Network Authorization. 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 Quick Developer Experience 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. 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. Finally, a Metal backend has been added for OpenXR, allowing applications to run in the Meta XR Simulator on macOS. Upgrade to 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. Still on 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). Read more about Qt 5.15 End of Standard Support and ESM. Try Qt 6 online You can now try Qt 6 on your browser - no installation needed. Simply browse to try.qt.io and start exploring! Coming soon: 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. Blog Topics:



Never forget.

Work → Buy Bitcoin → Sleep → Try Again = RICH GUY

Work → Spend → Sleep → Try Again = POOR GUY