What's New in Qt 6.5?
Qt 6.5.0 is hot off the presses! Here's a look at what is new and significant in this release, from a new tool to create shader effects for Qt Quick to Qt QML Core, a new module that exposes Qt Core APIs to QML.
Qt Release History
The Qt 6.5 release effort started around November of 2022 with a platform and module freeze, moving to three beta releases and a release candidate until 6.5.0 final was released on April 3, 2023. Qt 6.5.0 is one of the twice-yearly major Qt releases. The 6.5 series will be a long-term support (LTS) release, supported until Q1 of 2026. The previous LTS is the 6.2 series, which is planned to be maintained until Q3 of 2024.
If you've been holding back and are still using Qt 5, note that Qt 5 support ends in May of 2023 unless you have purchased a subscription license or other type of extended support.
New Qt Modules and Tools
There are some new modules in this release, as well as some that were previously considered technical previews and are now stable and out of tech preview.
Qt Quick Effect Maker is a new tool to create high-performance shader effects for Qt Quick. It is a standalone tool that lets you write and test vertex and fragment shaders in GLSL (OpenGL Shader Language), previewing them within the tool. It comes with a number of standard effects with properties you can modify. The resultant code can be exported as a QML component to use within your application.
Qt Quick Effects is a new module containing MultiEffect, for applying one or more simple graphical effects on a Qt Quick Item.
Qt Quick 3D Physics is a physics engine for use with Qt Quick 3D. This module is no longer in technical preview.
Qt QML Core is a new module that exposes various Qt Core APIs to QML.
Qt Location, available in Qt 5, is now back in Qt 6 as a tech preview. It supports rendering 2D maps into a Qt Quick application. Qt Location's Map renders 2D maps into a Qt Quick application. MapView includes Qt Quick Input Handlers to implement the typical interactive features (zoom, pan, tilt). Qt Location has back-end plugins for Mapbox and Open Street Map.
The new Qt GRPC module supports communicating with gRPC services using classes generated based on service descriptions. It is in tech preview. gRPC is a cross-platform open-source high-performance remote procedure call framework, initially created by Google.
Qt Protobuf is another new module, in tech preview, which supports generating, serializing, and deserializing Qt-based classes from protobuf specifications. Protocol Buffers is a free and open-source cross-platform data format used to serialize structured data. It is useful in developing programs to communicate with each other over a network or for storing data.
New Features
Most existing Qt modules have had updates, which you can explore in detail using the references listed at the end of this blog post. I will just list a few here that I feel are the most significant.
The Qt Core Module now supports a cross-platform tracing backend in Common Trace Format (CTF). CTF is a standardized binary trace format designed to be very fast to write without compromising flexibility. It allows traces to be natively generated by any C/C++ application or system, as well as by bare-metal (hardware) components.
The Qt GUI Module now has improved support for drag and drop on desktop platforms by reintroducing the classes QWindowsMimeConverter and QUtiMimeConverter. There have also been some improvements to the Vulkan rendering support.
For the Qt Quick Module, many improvements have been made to the TableView component. The Qt Quick scenegraph also now has some performance improvements due to using persistent, disk-based caching of graphics pipelines and intermediate format shader bytecode.
In the Qt Quick Controls Module, the Material style was updated and many controls received visual updates.
The Qt Serial Bus Module has added some new classes to provide additional functions for CAN bus.
The Qt QML Module has a number of improvements, most notably to the QML compiler.
Platform Changes
The WebAssembly back end for Qt continues to become more mature and received many improvements. Some minor updates were also made to the Windows, and macOS desktop platforms, and Android and iOS on mobile.
Summary
As this release is of mostly incremental improvements, I think this is an indication that Qt 6 is now complete and mature. The Qt Location module fills one of the few remaining gaps from Qt 5 that was not yet in Qt 6. If you are on an older series of Qt releases, you should consider moving to 6.5 because it is an LTS release. But you can take your time as It is generally recommended to wait for at least one minor release (e.g. 6.5.1) before using Qt 6.5 for production use.