Qt 6.4 Released
Today we have released Qt 6.4! The latest version of Qt introduces support for a new platform, brings lots of new functionality - some as technology previews (TP) - and plenty of improvements under the hood. Let's start with the biggest highlight.
With Qt 6.4 we are taking the support for WebAssembly out of technology preview. With Qt for WebAssembly, Qt developers can use their existing skills, and often existing code, to target the web. Applications targeting the web assembly platform can run in most modern web browsers, and are easily distributed like any other web content. Thanks to near-native performance, and the rich UI and 3D features of Qt Quick and Qt Quick 3D, solutions requiring heavy data processing and demanding visualization can now easily be built for the web.
However, WebAssembly isn't like any other platform that Qt supports. Applications run in the sandbox of the browser, which imposes some limitations on how much access they have to the local machine or operating system services. And they are also running in an environment that requires cooperation with the browser itself. Qt tries to abstract the respective platform particularities away, both transparently in the platform integration and through some dedicated APIs. To achieve the best results, make yourself familiar with the particular technical requirements for this platform. You can already sign up for our upcoming WebAssembly webinar.
WebAssembly itself continues to be a fast moving platform, with the potential to make a huge impact on the application development industry. We are committed to support web assembly, and will continuously improve and adapt Qt to make sure that Qt applications developed for web assembly continue to provide a great user experience for end users.
New and Renewed Modules
Qt 6.4 introduces new modules as technology previews, and brings back one of the modules that hadn't been available for Qt 6 users so far.
iOS Style for Qt Quick (TP)
User interfaces developed with Qt Quick Controls automatically use the native styling support for Windows and macOS, and for Android using the Material style. For Qt 6.4 we have added a native-looking style for Qt Quick applications running on iOS. The iOS style supports dark and light mode on iOS platforms, and can be used on macOS as well, which makes it easy to develop UIs optimized for that style from the comfort of a macOS development environment.
Qt HTTP Server (TP)
With this new module we make it easy to add an HTTP server to any Qt application. The server implements partial support for HTTP 1.1, and supports security through the Transport Layer Security protocol. However, it is designed specifically for making data available within a trusted network.
Qt Quick 3D Physics (TP)
We integrated physics simulation into Qt Quick 3D to make it easy to build 3D scenes in which objects move and interact naturally. Handcrafting such scenes and animations can be very laborious, but with the Qt Quick API it becomes very easy to add physics to any 3D scene. The implementation is based on the established, well-tested, and high-performant PhysX engine.
Qt applications support assistive technologies, such as screen readers, by default. But many applications can make additional use of text-to-speech synthesis. Announcing events or changes audibly through speech can make information more easily accessible for any user, esp in situations where attention is not constantly on the screen. We have now ported text-to-speech support to Qt 6, with only minor changes compared to Qt 5's QtSpeech module. The module supports a broad range of text-to-speech synthesizers on desktop, mobile, and embedded platforms, and we have added a QML API.
And a lot has happened in the existing modules.
Qt Quick 3D
Support for global illumination with pre-generated lightmaps allows creating more realistic 3D scenes, using different light-sources, while keeping the performance cost at runtime at a minimum. This feature is in early technology preview, and we are looking forward to your feedback!
In addition, we have added line particles, support for specular glossy materials, more configure options for reflection probes, skyboxes, custom materials, and textures to the toolbox.
Qt Quick Item Views
We have added more functionality to Qt Quick's TableView and TreeView types. Users can now use keyboard navigation, and select rows and columns. Application developers have more control over cell positioning, animations, and expanding and collapsing tree nodes.
Smoother animations in Qt Quick
In addition to improvements under the bonnet that make Qt's threaded render loop automatically handle broken vsync throttling, we have added a new FrameAnimation animation type that allows to run your code in sync with the animation frames.
QQuickWidget with full RHI support
With QQuickWidget you can build application user interfaces where Qt Quick and Qt Widget elements coexist. Until now this required using OpenGL. For Qt 6.4 we redesigned the class from the ground up, and now QQuickWidget is functional with all supported graphics APIs: Metal, Vulkan, Direct3D 11, in addition to OpenGL.
Serve data securely with QSslServer
Qt's network module has made it easy to write efficient TCP servers, and with Qt 6.4 we are making it just as easy to write servers that communicate over TLS.
We have added an FFMPEG-based multimedia backend, which provides consistent audio and video functionality on all platforms. For video playback we have improved the color space handling and HDR support, and applications can inject subtitles to QVideoFrames.
A new feature under technology preview is support for spatial audio. You can now create three-dimensional sound scenes, where Qt emulates a virtual room with sound characteristics based on the size of the room, the material of the walls and floor, and the position of the listener. This feature is in technology preview.
Useful new features in Qt Widgets
QFormLayout makes it easy to build user interfaces for capturing structured user input, and QWizard is a classic solution for guiding users through a complex task over a sequence of steps. For Qt 6.4 we have added APIs to control the visibility of rows in a formlayout, and to jump to any page in a wizard. Builders of complex applications with many keyboard shortcuts will find the small addition of an optional clear-button to QKeySequenceEdit useful.
Better support for value types makes it easier, and cheaper, to expose structured data from C++ to QML. Value types, and lists of value types, can be used for properties without the overhead of QObject-wrappers.
On the tooling side, you can look forward to the QML language server providing real-time feedback in your QML-enabled IDE. And the QML linter now can identify inefficient or improper usage of Qt Quick and Qt Quick Controls and generate warnings at build-time.
The QML Type Compiler is now enabled by default, and can compile more QML into C++.
The long tail
In addition to the above, a lot of work has gone into making it easier to work with string literals in your code. QStringEncoder and QStringDecoder now support all codecs supported by ICU (as long as Qt has been built with ICU support). Interoperability of Qt's date and time classes with std::chrono is improved, and Markdown is now supported as input and output when working with QTextDocuments.
If you are a commercial license holder, then you can download the Qt VNC Server as a technology preview. It works on top of Qt 6.4, and allows you to share any Qt Quick application with a VNC-compatible client.
The QML Script Compiler is part of the commerical Qt Quick Compiler Extensions, and with Qt 6.4 it can generate C++ code for operations on lists of value types, and generates better code for type conversions.
With Qt 6.4 we are introducing a number of new features as technology previews. Keep your eyes open for Qt for Python 6.4, and full support for Qt 6.4 in the upcoming Qt Design Studio releases.
The next release, Qt 6.5, will come with long-term-support for commercial users, and our focus will be on stabilizing and finalizing those features based on your feedback. In addition, we are working on the port of Qt Location to Qt 6, we are improving the theming support for Windows 11 and Linux desktops, and the work on improving the performance of QML through compiler tooling and better value type support continues.
For more details also beyond Qt 6.5, check our "Roadmap to the future of Qt" webinar.
Finally, I’d like to thank everybody that has helped make Qt 6.4 happen. You can find a full list of all contributors to the Qt source code at the end of the release notes. And there are also many others that have helped by reporting bugs, send us their feedback, and keeping our Continuous Integration infrastructure running.
Subscribe to our newsletter
Try Qt 6.5 Now!
Download the latest release here: www.qt.io/download.
Qt 6.5 is the latest Long-Term-Support release with all you need for C++ cross-platform app development.
Qt World Summit 2023: Berlin awaits!
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.