Version 6.4 of Qt has been released. Qt, pronounced cute, is an open source and cross-platform environment for developing applications and graphical user interfaces. It is used in Caliber, KDE, Opera, Skype, VLC Media Player, Digikam, Wireshark, and VirtualBox, among others. More information about this release is here to find. These are the release notes accompanying this release:
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 supports Qt. 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.
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 form layoutand 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++.
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 or Qts date and time classes with std::chrono has been 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 QtVNCServer 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 commercial 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.
|Linux, macOS, Windows 10, Windows Server 2016, Windows Server 2019, Windows 11