What's New in Qt 6.5
New and Restored Modules in Qt 6.5
Qt 6.5 adds the following module:
- Qt Quick Effect Maker - A tool to create high-performance shader effects for Qt Quick.
- Qt Quick Effects - A module containing MultiEffect, for applying one or more simple graphical effects on a Qt Quick Item.
- Qt Quick 3D Physics - A physics engine for use with Qt Quick 3D. This module is no longer a technology preview.
- Qt Location - a module for rendering 2D maps into a Qt Quick application. This module is in technical preview, API and ABI stability is not guaranteed.
- Qt Protobuf - A module that enables you to generate, serialize, and deserialize Qt-based classes from protobuf .proto-specifications. This module is in technical preview, API and ABI stability is not guaranteed.
- Qt GRPC - A module that enables communication with gRPC services using classes generated based on service descriptions from protobuf .proto-specifications. This module is in technical preview, API and ABI stability is not guaranteed.
Qt 6.5 reintroduces the following modules that were not present in Qt 6.4. All listed modules were ported to Qt 6 and the CMake build system.
A more detailed list of changes to each module can be found in Changes to Qt Modules in Qt 6.
- Nothing to see here.
New Features in Qt 6.5
Qt Core Module
- QTimeZone can now package a Qt::TimeSpec and, when relevant, an offset in a lightweight time representation that unifies the various APIs of QDateTime and QDate that took either a QTimeZone or a Qt::TimeSpec and offset.
- Introduced application permissions API, to allow applications to check or request permissions for features that require user consent before use.
- New cross-platform tracing backend in Common Trace Format(CTF) format.
- QBindable can now be constructed from any property with a NOTIFY signal. This enables integration of existing, non-bindable properties with Qt Bindable Properties.
Qt GUI Module
- Reintroduced classes QWindowsMimeConverter and QUtiMimeConverter for handling drag'n'drop and clipboard data in platform specific formats on Windows, macOS, and iOS.
- QVulkanInstance is now enabling Vulkan Portability physical devices by default. This is required in order to be operational with newer MoltenVK versions on Apple platforms. Added a NoPortabilityDrivers flag as well to allow opting out from this.
- The Vulkan rendering infrastructure is now using VK_EXT_debug_utils instead of the deprecated VK_EXT_debug_report and VK_EXT_debug_marker.
- QTextLayout::glyphRuns() can now return the string index corresponding to each glyph, when this is requested. Made available through the new function QGlyphRun::stringIndexes().
Qt Quick Module
- TableView got support for editing cells using an edit delegate.
- TableView got support for resizing rows and columns using the mouse.
- TableView got support for setting row and column sizes explicitly.
- TableView got a new signal 'layoutChanged()'. This signal can be used to e.g reposition overlay items.
- TableView got support for doing multi-selections
- Added support for specifying separate RGB and alpha blend factors in a QSGMaterial.
- The Qt Quick scenegraph is now automatically utilizing persistent, disk-based caching of graphics pipelines or the intermediate format shader bytecode, depending on the platform and the 3D graphics API in use. This is expected to reduce the time spent on graphics pipeline creation in subsequent runs of the application. In addition, QQuickGraphicsConfiguration provides explicit control over if/where this data is written out and loaded from, thus enabling advanced use cases such as shipping a pre-seeded cache file with an application or device, thus accelarating first-time startup as well.
Qt Quick Controls Module
- TreeViewDelegate got support editing tree nodes
- The Material style was updated to Material 3.
- Several controls received visual updates, so it is recommended to check how your application looks and adapt it accordingly:
- Some new API was added:
- Material.containerStyle controls the style of the container used by the target control. It can be attached to any window or item, but only TextField and TextArea support it by default.
- Material.roundedScale controls the radius of rounded corners used on the target control. It can be attached to any window or item, but only Button, Dialog, and DialogButtonBox support it by default.
Qt Widgets Module
- QKeySequenceEdit got two new properties: maximumSequenceLength allows applications to control how long a key sequence be, and finishingKeyCombinations defines key combinations that end the recording.
- Added stereoscopic rendering support to QOpenGLWidget, applicable also to any QGraphicsView backed by a QOpenGLWidget viewport. Unlike QOpenGLWindow, or the now-removed QGLWidget in Qt 5 and 4, QOpenGLWidget needs explicit support for this with supporting APIs in place, because applications do not directly render to the native window in this case, and therefore do not have the same control over the active draw buffers as they have with QOpenGLWindow.
Qt Positioning Module
- Introduced SatelliteSource - a QML API for QGeoSatelliteInfoSource.
Qt Serial Bus Module
- Introduced QCanSignalDescription, QCanMessageDescription and QCanUniqueIdDescription classes. These classes are used to provide a set of rules to encode or decode CAN bus messages.
- Introduced QCanFrameProcessor class. This class can be used to decode the received QCanBusFrame into a map of key-value pairs, and also compose a QCanBusFrame out of a map of key-value pairs.
- Introduced QCanDbcFileParser class. This class is used to parse DBC files and generate message descriptions, which can later be used in QCanFrameProcessor.
All new classes are experimental and are subject to change.
Qt Network Module
- Introduced QHttp1Configuration. The class can be used to configure the maximum number of connections used per host when using HTTP 1 (default: 6).
- QNetworkRequest on Qt for WebAssembly gained the UseCredentialsAttribute attribute, enabling withCredentials for the underlying XMLHttpRequest.
Qt QML Module
- API has been added to QQmlApplicationEngine and QQmlComponent to load/create QML elements via their module URI and type-name. In contrast to the URL based functions, this also works with C++ types and inline components.
- QQmlListProperty properties now behave more like arrays, gaining support for methods like map(), reduce() and forEach(). The same holds for other sequence types, like QList<int> and similar.
- A new AUTO_RESOURCE_PREFIX attribute has been added to qt_add_qml_module to automate the setting of resource prefixes. If you use it, the QML engine will always be able to find your QML modules in the resource file system.
- Extended the qmltc to support more qml constructs, notably translation bindings, inline components, singletons and signal handlers for c++-defined signals.
- The QML Script Compiler can handle additional constructs. In particular: console.log() and friends,
let
andconst
, qsTr() and friends, arg() for strings, all the remaining bitwise and shift operators, the exponentiation operator. - The QML Disk Cache can be controlled in a more fine grained way using the new environment variable QML_DISK_CACHE.
Qt Quick 3D Module
- Added automatic level of detail (LOD) support for models. This allows generating simplified versions of the meshes during asset import and then automatically picking the appropriate level when rendering.
- Added explicit level of detail (LOD) support to control the opacity of models based on the camera distance.
- Added ExtendedSceneEnvironment, with built-in effects for depth of field, color grading, glow, vignette, lens flare, and others. These effects are performed together, increasing efficiency compared to individual, stand-alone post-processing effects, each requiring one or more render passes.
- Enhanced DebugView with rendering statistics, the list of active mesh and texture assets, and live render pass information, as well as controls to interactively toggle settings, such as wireframe mode and material overrides from DebugSettings.
- Added DebugSettings, available via SceneEnvironment, allowing programmatic control over settings such as wireframe mode and material overrides to only render certain aspects of physically based materials.
- Added InfiniteGrid, implementing an infinite grid in the horizontal plane with fade out.
- Added built-in, simple fog support, available via SceneEnvironment. When enabled, this applies a depth and/or height fog effect when rendering the models in the scene.
- Improved picking when instanced rendering is used.
- Added vertex color support for PrincipledMaterial and SpecularGlossyMaterial
- Reflection probe: added support for using a provided cubemap texture instead of rendering the scene.
- Post-processing effects were enhanced to properly react to changes in shader source file URIs at run time.
- Added persistent, disk-based caching of runtime generated material shader data. This is expected to improve application startup and view change times.
Qt Data Visualization Module
- Nothing to see here.
Qt Charts Module
- Nothing to see here.
Qt WebView Module
- Added WebViewSettings to make it possible to configure some of the common WebView functionality.
Platform Changes
Technology Preview Platforms
Windows on ARM
- Nothing to see here.
Desktop Platforms
Windows
- The environment variable QT_WIN_DEBUG_CONSOLE can be set to see stdout/stderr messages in a console window also for GUI applications that are started from the command line. Set it to
new
orattach
.
macOS
- Added native backend for QMessageBox and QErrorMessage.
- Nothing to see here.
Wayland Client on Linux
- Now supports fractional_scale_v1 protocol for compositors that suggest fractional scale factors for the client.
Mobile Platforms
Android
- Updated Gradle to 7.5.1 and the Android Gradle Plugin (AGP) to 7.2.1 (requires JDK 11 or above).
- Updated NDK to r25b (25.1.8937393).
iOS
- Nothing to see here.
Embedded Platforms
Available under the Qt for Device Creation license.
Boot to Qt
- Nothing to see here.
QNX
- Nothing to see here.
INTEGRITY
- Nothing to see here.
Web Platforms
Web Assembly
- Nothing to see here.
List of API Changes
These pages contain an overview of API changes in Qt 6.5:
© 2023 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.