- Qt 6.10
- What's new in Qt 6
- What's New in Qt 6.10
- Qt 6.10.3 Reference Documentation

# What's New in Qt 6.10

## New and Restored Modules in Qt 6.10

Qt 6.10 adds the following modules and tools:

## New Features in Qt 6.10

### Qt Core Module

- QLocale is now updated to CLDR v47
- QLocale::uiLanguages() now includes truncated entries and is better-ordered
- QLocale::toString() overloads for integral type now accept precision and width
- The system locale is now distinguished in qDebug() output from the CLDR-derived one for the same language, script and territory
- QLocale::toString(double, ...)'s exponent separator now again matches the case requested
- QCalendar::daysInMonth() for unspecified year now gives the maximal value
- The new QRangeModel class provides an implementation of QAbstractItemModel that can operate on any C++ range.
- QXmlStreamReader::readRawInnerData() for retrieving the raw inner XML content of an element.
- Error handling API for QXmlStreamWriter with Error enum, error(), errorString(), and raiseError() functions.
- QXmlStreamWriter::stopWritingOnError() property, allowing users to control whether output halts immediately after encountering an error.
- Added QFuture::cancelChain() to cancel the entire continuation chain using any non-finished QFuture from the chain.
- The new qEnvironmentVariableIntegerValue returns the numerical value of an environment variable, or `std::nullopt` if the variable is not set or doesn't hold an integer.
- QFileInfo::isOther() returns true for file system entries that are neither a directory, regular file, or symbolic link.
- Added QSortFilterProxyModel::endFilterChange() taking a Direction parameter, to balance a previous call to endFilterChange(). These APIs replace invalidateFilter(), which will be deprecated starting from Qt 6.13.
- Two new overloads of QMetaObject::connect() make it possible to connect the QMetaMethod of a signal to a slot function or lambda.
- QCborValue::toStringView() and QJsonValue::toStringView() return a view of the string stored in the value, without any allocations.
- Use QDataStream::operator bool() and QTextStream::operator bool() to check whether the stream is in an error state.
- Use nullTerminate() to add a null terminator to a QByteArray or QString, e.g. after constructing them via QByteArray::fromRawData(). Test whether the array or string is null terminated with isNullTerminated().
- QByteArray can now implicitly convert to a std::string_view.

### Qt D-Bus Module

- QDBusConnectionInterface::serviceCredentials() returns the connection credentials for the process currently holding the specified bus service.

### Qt Graphs Module

- Filled surface graph type added: DrawFilledSurface
- Text elide support for 2D axes added: QAbstractAxis::textElideMode
- Pie slice label hiding support for small sized slices added: QPieSeries::angleSpanVisibleLimit, QPieSeries::angleSpanLabelVisibility, QPieSeries::LabelVisibility
- Multi-axis support for 2D graphs added: QAbstractSeries::axisX, QAbstractSeries::axisY
- Hover support for 2D series added: QAbstractSeries::isHovered
- Support for controlling plot area clipping in 2D graphs added: clipPlotArea
- Support for querying data point coordinates in LineSeries added: QLineSeries::dataPointCoordinatesAt
- Support for rendering a slice into an image in Bars3D and Surface3D added: Q3DBarsWidgetItem::renderSliceToImage, Q3DSurfaceWidgetItem::renderSliceToImage, QtGraphs3D::SliceCaptureType
- Added Bars3DNode, Scatter3DNode, and Surface3DNode for adding 3D graphs in QtQuick3D applications inside View3Ds
- Graph draw ordering support for 2D graphs added: QAbstractSeries::zValue
- Option to set timezone for DateTimeAxis added: QDateTimeAxis::timeZone
- Categorized logging support added

### Qt GRPC Module

- Performance improvements and bug-fixes for the QGrpcHttp2Channel. Read the blogpost here.
- Added the `unix-abstract` Transportation scheme to QGrpcHttp2Channel.
- Added serverInitialMetadata and serverTrailingMetadata interfaces to QGrpcOperation.
- Added QGrpcCallOptions::filterServerMetadata and QGrpcChannelOptions::filterServerMetadata options to control the filtering of the received server-metadata.
- Added QGrpcCallOptions::addMetadata and QGrpcChannelOptions::addMetadata for supporting incremental client-metadata updates.
- Deprecated metadata interfaces in favor of QMultiHash based interfaces: metadata(QtGrpc::MultiValue), setMetadata(QMultiHash).

### Qt GUI Module

- QStyleHints::accessibility provides access to user accessibility preferences, such as whether the system has enabled a setting for increased contrast.
- Added QAccessibilityHints to access individual accessibility settings.
- QRhi: Added support for enumerating 3D graphics adapters (physical devices), when running on Direct 3D 11, 12, or Vulkan, via the enumerateAdapters() function.
- QPainterPath::setCachingEnabled() can be used to turn on the caching of calculated values, increasing performance for certain operations at the expense of additional memory use.
- Added QPainterPath::trimmed() to return a section of the path.

### Qt HttpServer Module

- Added whitelist and blacklist of subnets in QHttpServerConfiguration.
- Added configurable keep-alive timeout in QHttpServerConfiguration.
- Made QHttpServerRequest copyable.

### Qt Lottie Animation

- Added support for solid, null and precomposition layers.
- Added lottietoqml tool. This is an equivalent tool to svgtoqml and it converts Lottie files to Qt Quick scenes described in QML. It is currently in tech preview.
- Added a plugin for VectorImage which enables it to load Lottie files in addition to SVG. This feature is tech preview and requires assumeTrustedSource to be set to `true`.
- Added lottietoqml example and qtlottieviewer example to demonstrate usage of Qt Lottie Animation.

### Qt Multimedia Module

- Added a native PipeWire audio backend.
- Audio pitch compensation for the FFmpeg-based QMediaPlayer based on the excellent Signalsmith Stretch library. The behavior can be customized via the pitchCompensation property.
- QCapturableWindow can now be constructed from QWindow in both C++ and QML.
- Added a new class QPlaybackOptions that allows users to control low-level FFmpeg media playback options, for example, playback intent, network timeout, and probe size.
- In QAudioSink and QAudioSource, added methods that allow users to operate with the underlying audio buffer in frame count instead of byte count.

### Qt Network Module

- Added fromFile() method to QSslCertificate.
- Added setDateTimeValue() to QHttpHeaders, a convenience method for setting date and time values in HTTP headers.
- Added convenience methods to QHttpHeaders to retrieve values as QDateTime, integers, or lists of these types.

### Qt Protobuf Module

- Added Qt Protobuf Mutable Getters to generated Protobuf messages, making them accessible using the `mut` prefix.

### Qt Qml Module

- Added a new TreeModel QML type that allows the definition of a tree structure in the QML file and works with TreeView.
- Added SortFilterProxyModel QML type to sort and filter model data. This feature is in tech preview.
- Added the delegateModelAccess property to DelegateModel and all views. You can now write through required properties into the model.
- Added the Synchronizer QML type. Synchronizer keeps two or more properties in sync without using bindings. This feature is in tech preview.
- Added semicolon customization rules to qmlformat. You can now control whether semicolons are added to the end of JS statements.
- Added new qmllint warnings focused on improving compatibility with Qt Creator, including checks for Qt Design Studio-specific limitations, additional JavaScript-related warnings, and several new warnings related to QML enums and imports.
- Removed support for manipulation of complex row structures from TableModel.
- Changed the order of the role and value parameters in TableModel::setData to resolve ambiguity.

### Qt Quick Module

- Added FlexboxLayout QML type to arrange the quick items in flexible way as similar to CSS Flexbox. This feature is in tech preview.

### Qt Quick Controls Module

- The FluentWinUI3 style has improved support for contrast themes on Windows 11.
- Added SearchField Control

### Qt Quick Dialogs Module

- Added property popupType which can be used to control whether a non-native dialog should open in a separate window or as an item in the existing scene. This has no effect when using native dialogs.

### Qt Quick Effects Module

### Qt Quick 3D Module

- Added emit-mode to shaped emitters to allow particles to be emitted based on the surface normals of the shape.
- Implemented reversed emitters to enable particles to run from end time to begin time.
- Several lightmap-related improvements and changes:
  - Introduced texels-per-unit based lightmap sizes, adding the Model::texelsPerUnit and Lightmapper::texelsPerUnit properties and replacing the now deprecated Model::lightmapBaseResolution property.
  - Introduced Lightmapper::source property to set one lightmap source for the whole scene, replacing and deprecating BakedLightmap::loadPrefix.
  - Added a builtin GPU-based Non-local Means (NLM) denoising for baked lightmaps, controlled via the Lightmapper::denoiseSigma property.
  - The lightmap baking window has been improved to show a progress bar and an estimation of time remaining.
  - Baking is now done in its own RHI context and does not block rendering of the running application.
  - RAM and VRAM usage has been decreased when baking certain scenes.
  - Added a lightmap viewer tool for debugging baked lightmap files via GUI or command-line.
- Fixed color import for glTF2 baseColorFactor by correctly converting from linear to sRGB, aligning it with the spec.
- Added CapsuleGeometry to QtQuick3D.Helpers with fixed textures, async creation support, and exposed uvProfile property.

### Qt Quick 3D XR Module

- Exposed method for requesting room scanning for spatial anchors.

### Qt Quick 3D Physics Module

- Deprecated CapsuleGeometry in favor of the improved one in QtQuick3D.

### Qt Quick VectorImage Module

- Added support for animated SVGs that matches animation support in Qt SVG.
- Added API to indicate whether source file is trusted or not.
- Added API to control animation behavior.
- By including a plugin provided by Qt Lottie Animation, VectorImage can now also show Lottie files. This feature is regarded as tech preview and requires assumeTrustedSource to be set to `true`.

### Qt Serial Port Module

- Added support for limiting write buffer size using writeBufferSize property.

### Qt Serial Bus Module

- Add missing move-constructor to QCanBusDeviceInfo.
- Make QCanBusFrame::FrameType and QCanBusFrame::FrameError QMetaEnums.
- The SocketCAN plugin no longer sets a default bitrate to avoid runtime warnings. Setting the bitrate must be done by system means `ip link set ...` or by libsocketcan and QCanBusDevice::setConfigurationParameter(QCanBusDevice::BitRateKey, ...).
- The VirtualCAN plugin now supports up to ten virtual CAN channels from can0 to can9.

### Qt Sql Module

### Qt SVG Module

- Added support for CSS animations for fill-opacity, stroke-opacity, and opacity properties.
- Added an example that demonstrates how to view SVG files.

### Qt Test Module

- Data-driven benchmarks now identify both global and local data in plaintext names
- Backtraces from lldb are now disabled on Apple Silicon
- When QTest prints floating-point values in a comparison, it now gives full precision and includes a hexfloat version

### Qt VirtualKeyboard Module

- Added PURL and CPE information to the attribution files of 3rd party sources.
- Added Latvian keyboard layout.

### Qt WebEngine Module

- Added support for Chromium extensions, using QWebEngineExtensionManager and QWebEngineExtensionInfo
- Added support for adding additional trusted CA certificates to a website profile without adding them to the platform certificate store: setAdditionalTrustedCertificates
- Added support for Back/Forward cache enabled using QWebEngineSettings::BackForwardCacheEnabled

### Qt WebView Module

- Added WebView2 plugin for the Windows platform. The new backend uses a native COM API from the Chromium based Edge browser called WebView2. Therefore, you can now provide web content without shipping Qt WebEngine.

### Qt Widgets Module

- Added support for increased contrast mode for the fusion, macOS, and Windows 11 widgets styles.
- Default editor event handling in item views has moved into the new QAbstractItemDelegate::handleEditorEvent() function, which custom event handlers can use to continue with standard event handling.
- Use setSupportedDragActions() in QListWidget, QTableWidget, and QTreeWidget to change the supported drag actions.
- The new QLayout::horizontalSizeConstraint and QLayout::horizontalSizeConstraint properties allow individually setting the horizontal and vertical size constraints of the widget.

### Qt XML Module

### Qt Mqtt Module

- Add support for WebSockets/Secure WebSockets

## Tools

### QDoc Documentation Generator

- QDoc can now automatically add “view source” links to every C++ API declaration. Enable the feature with the new url.sources family of configuration variables (`url.sources.enabled`, `url.sources.rootdir`, `url.sources.linktext`).
- QDoc now detects circular inheritance in QML types using Floyd’s cycle-finding algorithm and reports the problem instead of getting stuck in an infinite loop.
- QML property groups defined in `.qml` files are recognised and shown as a single grouped property when you document them with `\qmlproperty` commands.
- Source files generated by Qt tools (`moc_`, `uic_`, `qrc_`, etc.) are now skipped automatically, which shortens QDoc build times on large projects.
- The data type shown for a QML property inside a `.qml` file can now be overridden directly in the `\qmlproperty` command, even for non-aliased properties.
- The documentationinheaders option is no longer offered as a technical preview; rather, it is considered stable. It was first introduced in Qt 6.9.
- When generating DocBook output, QDoc now includes overload notes.
- Overloaded signals and slots now include a contextual snippet to show their use.
- QDoc can link against Clang libraries from LLVM 21.
- The .index-files include the declared return type from \fn-commands. This is useful for multi-project builds, when authors override the return type of a function with `auto`.
- You can now document your QML enumerations with the new \qmlenum command. QDoc creates a new section, QML Enumerations, in the generated documentation.
- Code snippets indentation is now normalized, stripping out excess left margin whitespace. This means that snippets from source that is heavily indented (e.g. in a deeply nested series of `if`-statements) will present as if not nested.
- QDoc now correctly parses template aliases with default parameters.
- QDoc no longer auto-links to deprecated functions if there are non-deprecated alternatives.
- You can prevent machine translation of strings using the new \notranslate-command.

### Qt Linguist

- Added support for organizing ID-based translations with custom labels in Qt Linguist and lupdate.
- Introduced a QML form preview feature in Qt Linguist for visual validation of translations in context.
- Updated Qt Linguist with a refreshed UI, including new icons, improved color palette, and better handling of dark mode.
- lupdate and lrelease now support mixing ID-based and text-based translations within the same document.
- Removed the Clang-based parser from lupdate.
- Unified support for meta strings (comments like //: and //~) across different programming languages in lupdate.
- Added new i18n examples to the documentation.
- lrelease now provides the -fail-on-unfinished option to fail the build if there are unfinished translations.
- Deprecated using `//=` metastring comments to set IDs for text-based translations.

## Platform Changes

### Build System Changes

- Usage of a private Qt module Foo now requires a call to `find_package(Qt6 COMPONENTS FooPrivate)` to make the `Qt6::FooPrivate` target available.
- Added a `DISCARD_FILE_CONTENTS` option to `qt_add_resources()`.
- The `FILENAME_VARIABLE` option of `qt6_generate_deploy_[app_]script`, which was deprecated in Qt 6.6.0, has been removed.
- Added the `NO_PLUGINS` argument to `qt_deploy_runtime_dependencies`. This turns off plugin deployment altogether.
- Added the arguments `INCLUDE_PLUGIN_TYPES`, `EXCLUDE_PLUGIN_TYPES`, `INCLUDE_PLUGINS`, and `EXCLUDE_PLUGINS` to `qt_deploy_runtime_dependencies`.
- Added arguments for selecting Qt plugins to `qt_generate_deploy_app_script`.
- `qt6_import_plugins` doesn't have any effect anymore on plugin deployment with the CMake deployment API on Linux.
- `qt6_deploy_runtime_dependencies` now supports the following plugin selection flags on Linux: `INCLUDE_PLUGINS`, `INCLUDE_PLUGIN_TYPES`, `EXCLUDE_PLUGINS`, `EXCLUDE_PLUGIN_TYPES`.
- Added a `DISCARD_QML_CONTENTS` option to `qt_add_qml_module()`, that removes original QML and JS file contents from the target's resource system.

### Desktop Platforms

#### Windows

- Windows on ARM pre-built binaries also include QtWebEngine and QtWebView.

#### Linux

- Linux desktop pre-built binaries are now built using RHEL9, which raises the minimum glibc requirement from 2.28 to 2.34.

#### macOS

- Windows that opt into extended dynamic range (EDR) now trigger expose event on screen brightness change
- The titleUIElement accessibility property is now supported
- Service menu integration is now rich-text aware
- QOperatingSystemVersion::MacOSTahoe represents macOS 26
- Mappings for WhatsThisCursor and BusyCursor have been added
- QImage::toCGImage() now propagates the image's color space

#### Wayland Client on Linux

### Mobile Platforms

#### Android

##### Qt for Android

- Updated Gradle to version 8.14.2 and Android Gradle Plugin AGP to version 8.10.1.
- Added support for Android 12 Splash Screen.
- Added support for Android 16KB page sizes.
- Added an example (QtJennyDemo) for accessing Android APIs via C++ wrappers produced by a code generator (QtJenny).
- Changed Android 16 (API 36) as maximum supported platform version.

##### Qt Quick for Android

- Added multiple arguments support for signals under QtQuickView.
- Added support to register signal listeners before QML is fully loaded.
- Public Java APIs in javadoc format.

#### iOS

- Added QPointingDevice support for Apple Pencil
- Fixed rotation for standard Apple Pencil
- Added support for hover feature for Apple Pencil 2nd gen or later
- Windows that opt into extended dynamic range (EDR) now trigger expose event on screen brightness change
- Update requests will now be paused when the app moves out of active state
- QScreen now also reports inverted screen orientations
- RLIMIT_STACK now reflects the effective stack size
- QImage::toCGImage() now propagates the image's color space

### Embedded Platforms

#### Boot to Qt

- Support was added for Yocto 5.2 (Walnascar).
- Support Levels for Target Hardware was updated with supported boards for Tier 2:
  - NXP i.MX 93 11x11 LPDDR4X EVK.
- Support Levels for Target Hardware was updated with supported boards for Tier 3:
  - Toradex Colibri iMX6 ULL.

#### Real-Time Operating Systems

- Real-time operating system support is provided only for LTS releases. For non-LTS releases, support is available exclusively through Professional Services.

## Modules Deprecated in Qt 6.10

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

- Qt Charts
- Qt Data Visualization

The Qt Charts and Qt DataVisualization modules are deprecated. They continue to be part of the licensed software, and remain part of the Qt Project. However, for new code we recommend that you use Qt Graphs. Also, consult the documentation for {Qt Graphs Migration from Qt Charts}{migrating from Qt Charts} and migrating from Qt Data Visualization.

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.10:

- New Classes and Functions in Qt 6.10
- Obsolete Classes

## Known Issues

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