Qt 6.0 release has been announced with new graphics architecture, Desktop styling for Qt Quick, Qt Quick 3D, and default support for CMake build system.
Qt 6.0 has been in the works for years now and is considered as the starting point for the next generation of Qt. It is also important to note that it is not yet as feature-complete as Qt 5.15 but is expected to catch up in the next few months with subsequent updates with Qt 6.2 LTS, by the end of September being the target.
The next few months will be dedicated to the stability of the new releases and taking the new property system into more wide-spread use within Qt itself.
Highlights of Qt 6.0 Release
Qt 6.0 Release is officially supported on Windows 10, macOS 10.14 and newer, Linux (Ubuntu 20.04, CentOS 8.1, OpenSuSE 15.1), iOS 13 or newer, and Android (API level 23 or newer). Qt 6 does not yet support any of the embedded real-time operating systems supported in Qt 5. Both QNX and INTEGRITY should have support by 6.2 LTS.
Compatibility for widely used classes that have been removed from Qt 6, such as QRegExp, QTextCodec, the old SAX parser for XML, and a few other items are available through the Qt5CoreCompat module.
CMake Build System and Packaging
CMake is now the preferred build system. this means there are significant improvements for users that use CMake. It is worth noting that there will be continued support for qmake throughout the lifetime of Qt 6. Qt 6 also comes with a much smaller default package, and many of the add-ons are now distributed as separate packages through a package manager.
This opens the possibility to use the package manager as a delivery channel for 3rd party content. The existing Qt installer is currently being used as the backend for the package manager.
Qt 6 now requires a C++17 compatible compiler enabling the use of more modern C++ language constructs when developing Qt and also allows for integration points on the API side.
Core Libraries and APIs
There are several improvements in Qt Core such as the new property and binding system that made QML such a huge success in Qt 5 now available from C++. Qt strings are now fully aligned with Unicode. QList and QVector have been unified into one class with the latter being an alias of the former. The class also comes with major performance improvements.
QMetaType and QVariant classes have practically been re-written almost entirely from scratch. Qt Concurrent has also received the same treatment resulting in development of multi-threaded applications much easier. Qt Network has seen lots of clean-up and improvements as well.
Qt Quick 3D and Qt 3D
The relatively new module Qt Quick 3D provides seamless integration between 2D and 3D content with full support for creating complex 3D scenes including placing 2D items in 3D scenes. This is done using the underlying graphics API and Hardware. There is improved support for glTF2 and physics-based rendering and much more in this domain.
Desktop Styling for Qt Quick
Qt Quick controls can now look & feel native on desktop operating systems. Native styling is supported on both macOS and Windows. In Android and Linux custom styling already existed with the Material and Fusion styles from Qt 5. The Native style for iOS is expected to come in later releases.
All New Qt 6.0 Release Graphics Architecture
The older graphics architecture was very dependent on OpenGL as the underlying 3D graphics API. With the introduction of Metal and Vulkan changes have been made. 3D graphics in Qt Quick are now built on top of a new abstraction layer for 3D graphics called RHI (Rendering Hardware Interface).
RHI makes it possible for Qt to use the native 3D graphics API of the underlying OS/platform. With that in mind, Direct3D will be used on Windows and Metal on macOS by default. A new module called QtShaderTools has been added to deal with the different shading languages of those APIs. The OpenGL specific classes still exist but are no longer in QtGui but have been moved to the QtOpenGL module.
You can read more about the Qt 6.0 release here. Open source users can go and download the new version from the official download page here. Commercial customers can download it from the Qt Account portal.