What's New in Qt 6.1

New and Restored Modules in Qt 6.1

Qt 6.1 adds the following modules:

Active Qt Module

Active Qt provides ActiveX and COM support that lets Qt for Windows developers:

  • Access and use ActiveX controls and COM objects provided by any ActiveX server in their Qt applications.
  • Make their Qt applications available as COM servers, with any number of Qt objects and widgets as COM objects and ActiveX controls.

Qt Charts Module

Qt Charts still supports only OpenGL for accelerated series (AbstractSeries.useOpenGL). Such series will not render in Qt Quick if another graphics API is used for rendering.

Qt Data Visualization Module

Qt Data Visualization only supports the OpenGL RHI backend, and requires setting of the environment variable QSG_RHI_BACKEND to opengl. This can either be done at the system level, or defined in the application's main() with qputenv("QSG_RHI_BACKEND", "opengl");.

Qt Device Utilities Module

Support for networking functionality only.

Qt Lottie Module

The Qt Lottie Animation module has been ported to Qt 6 and the CMake build system.

Qt SCXML and Qt StateMachine

Qt State Machine contains APIs that were part of Qt Core in Qt 5. The Qt State Machines package in the installer contains both the Qt SCXML and Qt State Machine modules.

Qt Virtual Keyboard Module

The Qt Virtual Keyboard module has been ported to Qt 6 and the CMake build system.

  • A new dictionary manager allows user defined dictionaries (e.g. phone book) to be implemented by the application.
  • There are new properties in VirtualKeyboardSettings.
  • Support is added for Cerence Handwriting (T9 Write) and XT9.

New Features in Qt 6.1

Qt Core Module

  • QFuture has new convenience functions to create futures in various states and can now invoke its continuation in a context object's thread.
  • qfloat16 can be constructed uninitialized.
  • <QtMath> provides qHypot(), generalising std::hypot() to arbitrarily-many arguments and supporting qfloat16 arguments.
  • Overflow-safe arithmetic is now supported by the functions qAddOverflow(), qSubOverflow(), and qMulOverflow().
  • removeIf() methods and erase_if() support are extended to more classes:
    • QHash, QMap and their Multi variants, whose predicates take either a std::pair or the container's own iterator.
    • QSet, which also gains an insert() overload that takes (but ignores) a location hint, for compatibility with the standard library.
    • QString, QByteArray and QList, which also gain erase() support to remove all instances of a specified value.
    • QVarLengthArray, along with erase() support and methods removeAll() and removeOne().
  • QStringView's API now includes count(), contains(), indexOf(), lastIndexOf(), constBegin(), and constEnd().
  • QLocale provides mappings from its enums to ISO codes and back: languageToCode(), scriptToCode(), countryToCode(), codeToLanguage(), codeToScript(), and codeToCountry().
  • QSocketNotifier now supports more flexible creation.
  • Added QOperatingSystemVersion::version(), QMetaType::hasRegisteredDataStreamOperators(), and QUntypedBindable::isReadOnly(), whose names hopefully say enough.
  • Added QJniObject and QJniEnvironment as public API (mainly used for Android).
  • Object property bindings have received API refinements, and bindings are added to Qt Core classes - see the Property bindings blog post for context.

Qt Gui Module

  • QColorSpace can now set custom transfer-functions as tables.
  • QTextDocument now lets you to set a resource provider function, instead of sub-classing QTextDocument and overloading loadResource().
  • The Vulkan API wrappers (QVulkanFunctions, QVulkanDeviceFunctions) now expose the Vulkan 1.1 and 1.2 core APIs as well.
    • With relevant new functionality (supportedApiVersion()) added to QVulkanInstance to allow querying the supported instance-level version before instance creation.
  • Added QPainter::VerticalSubpixelPositioning hint. This is currently only supported on the Freetype font backend, and when available it will enable subpixel positioning of text in vertical direction at the expense of some memory and additional work. For most use cases, this should be left off, but it can be useful for very specific cases where you want to align painted elements vertically on a dynamically transformed painter.

Qt Widgets Module

Qt Network Module

  • QNetworkCookie now supports the SameSite feature.
  • Introduced QNetworkInformation:
    • QNetworkInformation currently exposes the reachability of the system, using system API.
    • Currently supports Darwin, Windows, Android, and NetworkManager on Linux.
  • TLS backends, powering QSslSocket and related QSsl classes, were converted to plugin-oriented design.
    • Public and private classes in the 'ssl' sub-module of QtNetwork are now TLS implementation neutral and are not exposed to low-level APIs/details.
    • Existing TLS-backends (OpenSSL, SecureTransport, Schannel) now report which classes, features and protocols they support.
    • It's possible (for an application, using Qt) to provide its own backend to be used by QSslSocket and related classes.

Qt Qml Module

  • Added QJSPrimitiveValue and QJSManagedValue for a more fine-grained control over JavaScript execution than it was possible with QJSValue alone.
  • The qt6_add_qml_module CMake function (still in Tech Preview) adds a qmllint target, which runs qmllint on the target's QML files.

Qt Quick 3D Module

  • Technology preview: "Instanced Rendering", an optimized way of drawing multiple instances of the same objects with different transformations. This feature is considered feature-complete, but may still undergo minor API changes based on user feedback. It is planned for finalization in Qt 6.2.
  • Technology preview: 3D Particles, an API for adding particle effects to 3D scenes. This API is ready for testing, but is not yet feature-complete.
  • Qt Quick 3D now supports morph target animations, i.e. animations where all vertices interpolate between two sets of positions, giving the impression that one shape is morphing into another.

Qt 5 Compatibility Module

While Qt Graphical Effects does not ship with Qt 6, a number of effects have been ported to the new graphics architecture and added to the Qt5Compat module. For example, to gain access to DropShadow, add the QML import Qt5Compat.GraphicalEffects. Some complex effects that rely on dynamic shader generation, such as a number of blur variants, have been removed.

List of API Changes

These pages contain an overview of API changes in Qt 6.1:

Additions to Other Qt 6 Releases

© 2021 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.