On this page

What's New in Qt 6.12

This page is work in progress.

New and Restored Modules in Qt 6.12

Qt 6.12 adds the following modules and tools:

  • The Qt Qml Design Support module with a set of types for registering and referencing objects in QML. It is meant for future Qt Quick design tooling.

New Features in Qt 6.12

Qt Bluetooth Module

  • The Android backend now respects the advertising minimum and maximum interval parameters provided via QLowEnergyAdvertisingParameters when starting the BTLE advertising.

Qt Canvas Painter Module

Qt Core Module

Qt D-Bus Module

Qt Graphs Module

Qt GRPC Module

Qt GUI Module

Qt HTTP Server Module

Qt Lottie Animation Module

Qt Multimedia Module

Qt Network Module

Qt OpenAPI Module

  • qt_add_openapi_client() gained GENERATE_DOCUMENTATION, DOCUMENTATION_OUTPUT_DIRECTORY options to generate Doxygen based documentation alongside the client code.
  • Added support for the oneOf schema feature.
  • Renamed generated model property getters. Q_PROPERTY now exposes the same property names as those used in the YAML file.
  • Generated client API methods are no longer virtual.

Qt Positioning Module

Qt Protobuf Module

  • Qt properties in the generated message classes are now marked with the FINAL modifier by default. This enables QML tooling to apply performance optimizations and generate more efficient code. Use the new option GENERATE_NON_FINAL_PROPERTIES of qt_add_protobuf() to revert to the old behavior.

Qt Qml Module

Qt Quick Module

Qt Quick Controls Module

  • Added the QtQuick.Controls.Native style. import QtQuick.Controls.Native chooses the best-suited style for the platform you compile for at compile time. It therefore combines the benefits of compile-time style selection with the possibility to have a platform-specific look-and-feel for your application.
  • ToolTip gained a policy property to control automatic tooltip visibility.
  • ComboBox gained a highlightOnHover property.
  • RangeSlider gained a crossingEnabled property to allow or prevent the two handles from crossing each other.
  • Menu gained a separatorsCollapsible property.
  • MenuItem now displays the keyboard shortcut from an associated Action.
  • SearchField now allows navigation with keys if its TextInput is empty.
  • A subset of the existing TextField APIs were added to SearchField for convenience: selectTextByMouse, selectedText, selectionStart, selectionEnd, cursorPosition, select(), selectWord(), and deselect().

Qt Quick Dialogs Module

Qt Quick Effects Module

Qt Quick Test Module

Qt Quick 3D Module

Qt Quick 3D XR Module

  • Added support for mono view configuration (XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO), enabling Qt Quick 3D XR applications to run on 2D XR devices such as AR glasses.

Qt Quick 3D Physics Module

Qt Quick VectorImage Module

  • Added asynchronous property for loading vector image.
  • Added status property for tracking the progress of loading the image.
  • Added retainWhileLoading to be used in combination with asynchronous.
  • Added generatedItem property for accessing the generated subtree.

Qt Serial Port Module

Qt Serial Bus Module

Qt Sql Module

Qt SVG Module

Qt Labs StyleKit Module

Qt TaskTree Module

Qt Test Module

  • Benchmark results now include variance and standard deviation across measurement backends (time, CPU ticks, events, Valgrind).
  • The plain-text benchmark logger now formats floating-point results using scientific notation for consistency.
  • When non-existent test functions are specified on the command line alongside valid ones, the valid tests are still executed.

Qt VirtualKeyboard Module

Qt WebEngine Module

Qt PDF Module

  • QPdfSearchModel gained a status property and a Status enum to track whether a search is in progress, idle, or complete.
  • QPdfView now supports control-mouse-wheel zooming centered on the cursor position.

Qt WebView Module

Qt Widgets Module

Qt XML Module

Qt MQTT Module

Tools

Qt Assistant

  • Qt Assistant now renders light/dark themed SVG diagrams correctly when a dark color scheme is active, matching the behavior of the online Qt documentation.

QML Command Line Tools

  • Added the --only-explicit-categories option to qmllint to suppress all default warnings.
  • Non-registered types used in properties and methods of registered types are now recorded in qmltypes as "opaque" types. This avoids warnings in tooling, allows auto-completion and go-to-definition to work in qmlls, and enables binding compilation to C++ in more places.
  • Changed qmllint and qmlls to only warn once on unknown types, instead of generating warnings foreach binding and usage of the unknown type.
  • Added new warnings to qmllint and qmlls for:
    • Shadowed QML type members.
    • Incompatible file selected variants (opt-in).
    • Recursively instantiated QML types.
    • QML types referred by their filename instead of their qmldir or QT_QML_SOURCE_TYPENAME name.
    • Javascript usages of the new Array() overload taking more than 1 argument.
  • Added functionality in QML Language Server to:
    • Wrap Components into a Loader via a code action.
    • Find C++ definitions of types declared via QML_FOREIGN.
    • Show progress during background rebuilds of QML type information.

QDoc Documentation Generator

  • C++20 concepts: The new \concept topic command generates a dedicated reference page for a C++20 concept, including a list of the documented types and functions constrained by it. Concept references in C++ synopses link to these pages in both HTML and DocBook output, and template parameters constrained directly by a concept (such as template <Integral T>) display the concept name instead of the typename keyword. Concept links work across module boundaries through .index files.
  • enable_if-based SFINAE constraints render as readable requires clauses instead of opaque unnamed boolean template parameters, extending the C++20 requires clause support introduced in Qt 6.11. When a function also has an explicit requires clause, the two are combined.
  • Explicitly defaulted and deleted functions carry [default] and [delete] tags in the synopsis, while compiler-generated special member functions are tagged [implicit]. These tags link to cppreference.com. For such functions without an \fn block, QDoc auto-generates documentation without emitting warnings. Explicit documentation overrides the generated text, and setting the showautogenerateddocs configuration variable to false omits it from the output.
  • QDoc distinguishes hidden friends — friend functions findable only through argument-dependent lookup — from friend declarations that merely grant access. Document hidden friends, including those defined out of line, using their natural free-function syntax, such as \fn operator==(const MyClass &, const MyClass &), instead of a class-qualified name.
  • A unified table replaces the scattered paragraphs of comparison documentation generated by the \compares and \compareswith commands, showing at a glance which types a class compares with and which comparison category applies to each relationship.
  • The \a command now validates template parameter names. QDoc warns about undocumented template parameters in classes and type aliases, and about undocumented non-type or template-template parameters in functions.
  • Customize the status descriptor and message generated by the \preliminary command with the preliminary configuration variable, allowing terminology such as "Technology Preview" in place of the default. Status commands prioritize consistently: \preliminary overrides \modulestate, and \internal overrides both.
  • A status set on a \module or \qmlmodule topic, such as \preliminary or \deprecated, propagates to the module's members unless a member sets its own status.
  • The new \qmluncreatabletype topic command documents QML types that are registered with the QML type system but cannot be instantiated. QDoc also detects types annotated with the QML_UNCREATABLE macro automatically.
  • Attached properties, signals, and methods are annotated in the main QML reference pages, not only in the "all members" pages.
  • The \qmlmethod command requires a complete signature; QDoc warns when the return type is missing or the parameter list doesn't parse.
  • Include statements in class documentation reflect the actual header file names reported by Clang. Projects using Qt-style convenience headers (such as <QString>) continue to work automatically.
  • Each project gets a single .index file in the base output directory, replacing the per-format copies in format-specific subdirectories. Relative paths in the indexes configuration variable resolve against the .qdocconf file's location, consistent with other path variables.
  • Generated HTML files include automatic <meta name="keywords"> entries based on page type (class, QML type, module, example, and so on), easing post-processing and sitemap generation. Code blocks carry tags compatible with highlight.js syntax highlighting.
  • Smaller improvements to documentation authoring: use \meta qdoc-suppress-inheritance to suppress the "Inherits:" row for types that inherit a base class for documentation purposes only; \list honors start values of zero and below; \# represents a literal # character in \l link targets; and \details enforces its documented brace-delimited summary argument.
  • Technology Preview: A new template-based generator renders documentation from a structured intermediate representation using Inja templates, and the templates define the output format. QDoc ships with HTML and Markdown templates that work out of the box; you can also supply your own templates and themes, and a single run can produce several template-based formats. Configure QDoc with QT_QDOC_ENABLE_TEMPLATE_GENERATOR to try out the new generator pipeline.
  • Added LLVM/Clang 22 compatibility.

Qt Linguist

  • lupdate now preserves the existing line endings in .ts files. On Windows, files with CRLF line endings are updated in-place with CRLF; files with LF line endings and new files keep LF.
  • Qt Linguist has a new option -web-help to use online web documentation if desired.

Resource Compiler (rcc)

  • rcc now deduplicates resource data using content-based SHA256 hashing. Identical files embedded in a Qt resource collection are stored only once, reducing the size of compiled-in resources without any change to application source code.

Platform Changes

Build System Changes

Building Qt

  • Building Qt now requires CMake 3.25 or later.
  • Added the static_compiler_runtime CMake feature to statically link the C++ runtime libraries. On Windows (MSVC) this uses the Hybrid CRT method, removing the dependency on the Visual C++ Redistributable.

CMake API

Desktop Platforms

Windows

  • CMake projects now automatically generate and embed an application manifest for Windows executables built with qt_add_executable. The manifest declares Windows 10/11 compatibility, enables long-path awareness, and configures the UAC execution level. Two new CMake target properties control the generated manifest: QT_WINDOWS_APP_PROJECT_IDENTIFIER sets the assembly identity name, and QT_WINDOWS_APP_PROJECT_EXECUTION_LEVEL sets the execution level. See Qt for Windows - Deployment for details.
  • windeployqt gains --appx and --appx-certificate options for generating an AppxManifest.xml suitable for packaging as a Windows Store appx package.
  • QOperatingSystemVersion::Windows11_25H2 (10.0.26200) is added as a named OS version constant.
  • QScreen::colorSpace() now returns the screen's actual color space derived from its ICC profile on Windows, using ColorProfileGetDisplayDefault.
  • The DirectWrite font backend now reads each font's GASP table to select the appropriate antialiasing strategy per font and point size, matching the font designer's intent more closely.
  • The shader disk cache is re-enabled for current Intel GPU drivers. It had been unconditionally disabled for Intel graphics on Windows for several years; a driver version check is now used instead, improving Qt Quick 3D performance on modern Intel hardware.
  • QWizard no longer applies the Aero wizard style when the system is in dark mode, where it does not render correctly.

Linux

To be updated.

macOS

  • QScreen::grabWindow() now uses ScreenCaptureKit instead of the deprecated CGDisplayCreateImageForRect. A permission prompt will be shown the first time the API is used.
  • QWindows parented into non-flipped NSViews now maintain their position relative to the superview's top-left corner when the superview is resized.
  • QCocoaNativeInterface::setEmbeddedInForeignView() is no longer necessary or supported to embed a Qt view hierarchy in a foreign NSView. Qt now manages this automatically.
  • Sandboxed apps built against a static Qt build are now relocatable by default on Apple platforms.
  • QMainWindow's unified title and toolbar mode is now implemented via Qt::ExpandedClientAreaHint and Qt::NoTitleBarBackgroundHint instead of the deprecated textured NSWindow style.
  • QStandardPaths::standardLocations() now includes the system-wide /Library/Preferences directory for ConfigLocation, GenericConfigLocation, and AppConfigLocation.

Wayland Client on Linux

Mobile Platforms

Android

Qt for Android
  • Added multi-ABI support for Feature Delivery projects.
Qt Quick for Android

iOS

Embedded Platforms

Boot to Qt and Qt Onboard

  • New platforms:
    • Orange Pi 2
    • NXP i.MX95
    • Qualcomm Dragonwing IQ6
    • Qualcomm Dragonwing IQ9
    • Renesas RZ/G3E

Real-Time Operating Systems

QNX
  • Added Vulkan support on QNX.
  • Qt Multimedia now builds on QNX 8.0. Audio playback and recording are not yet available, as the audio backend has not yet been implemented for QNX SDP 8.0.
VxWorks
  • Added VxWorks 26.03 support.

WebAssembly

  • QAudioSource and QAudioSink now use the Web Audio API AudioWorklets backend instead of OpenAL, enabling browser-native low-latency audio capture.
  • Video frames are now uploaded to WebGL using texImage2D for zero-copy rendering when using Qt Quick.
  • Added QCameraFormat support.

Modules Deprecated in Qt 6.12

The following modules are deprecated. We strongly advise against using them in new code.

To be updated.

For more information about the life-cycle of modules in Qt, see QUIP-14.

List of API Changes

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

Known Issues

For information about known issues in Qt 6.12 see the Qt Wiki.

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