What's New in Qt 6.3

New and Restored Modules in Qt 6.3

Qt 6.3 adds the following module:

Qt 6.3 reintroduces the following modules that were not present in Qt 6.2. All listed modules were ported to Qt 6 and the CMake build system.

  • Qt PDF (in Technical Preview)

A more detailed list of changes to each module can be found in Changes to Qt Modules in Qt 6.

New Features in Qt 6.3

Qt Core Module

Qt GUI Module

Qt Quick Module

  • New item added: TreeView.
  • All pointer handlers have settable parent properties.
  • HoverHandler and WheelHandler have a blocking property to control whether the hover and wheel events respectively propagate to items and handlers behind the handler's parent.
  • TapHandler now has one more gesturePolicy value: DragWithinBounds; it is similar to WithinBounds, except that even if the user drags while holding the point pressed, timeHeld is not reset during dragging, and the longPressed signal is emitted regardless of the drag threshold, if the user holds it that long. This is useful for implementing press-drag-release components such as menus (like the pie menu in the pointer handlers example) while using timeHeld to directly drive an "opening" animation.

  • QQuickItem::clipRect() now provides the region visible in the viewport (the parent Flickable or Window), and can be used to limit scene graph node vertices as an optimization in custom items, at the cost of having updatePaintNode() called more often. See docs about the new QQuickItem::ItemObservesViewport and QQuickItem::ItemIsViewport flags.
  • To save memory and startup time, Text and TextEdit now avoid generating scene graph nodes for large portions of text that are invisible because of falling outside the viewport (Flickable or Window).
  • Text now renders horizontal rules from HTML or Markdown.
  • In Text, horizontal rules and underline/overline/strikethrough lines can be colored by CSS rules included in HTML source.
    import QtQuick
    
    Text {
        textFormat: Text.RichText
        wrapMode: Text.WordWrap
        width: 440
        font.pointSize: 12
        text: `<p><u style="color: green;">green with underline</u>
                  <span style="text-decoration: underline; text-decoration-color: green;">
                    green underline</span></p>
               <p><s style="background-color: lightgrey;">plain strikethrough</s>
                  <span style="text-decoration: line-through; text-decoration-color: orange;">
                    orange strikethrough</span></p>
               <p><span style="text-decoration: overline;">plain overline</span>
                  <span style="text-decoration: overline; text-decoration-color: red;">
                    red overline</span></p>`
    }
  • QQuickItem::dumpItemTree() has been added; it can be called from C++ (similar to QObject::dumpObjectTree()) or from QML, to show the qDebug-operator output for an item and all its children, indented to show the tree structure.
  • TapHandler tapped, singleTapped and doubleTapped signals now have two arguments: the QEventPoint instance, and the button being tapped. If you need a signal handler, you should write an explicit function to receive those arguments:
    onTapped: function(point, button) { ... }
    onDoubleTapped: (point, button)=> ...
  • DragHandler activeTranslation now holds the amount of movement since the drag gesture began. persistentTranslation holds the accumulated sum of movement that has occurred during subsequent drag gestures, and can be reset to arbitrary values between gestures.

Qt Quick Controls Module

Qt Quick Dialogs Module

  • Added FolderDialog and MessageDialog. These are native dialogs on platforms that support it, and non-native Qt Quick dialogs on other platforms.

    The non-native dialogs support all of the non-native styles: Basic, Fusion, Imagine, Material and Universal.

Qt Widgets Module

  • QToolBar now supports scrolling with a kinetic wheel or track pad.

Several new QStyle enum values are available to allow styles to customize additional look and feel aspects of a widget-based UI:

Qt Network Module

  • QNetworkInformation learned transportMedium. A property that returns the transport medium of the primary network interface.
  • QNetworkInformation also learned isMetered. A property that returns whether the network is metered.

Qt QML Module

  • Added tech preview QML type compiler (qmltc) that compiles QML type structure to C++.
  • Added several new warnings to qmllint which now uses compiler infrastructure.
  • The header only qmlintegration module allows to mark types for registration in a QML module, without adding a dependency to qtdeclarative. Those can then be added to a QML module via the new qt_generate_foreign_qml_types() CMake API.
  • qmlcachegen compiles suitable functions and expressions to C++ now, for improved performance.
  • Added new public CMake API:

Qt Quick 3D Module

  • Added ReflectionProbe, making it possible for models to show reflections.
  • Particles3D: New ParticleCustomShape3D element which loads emitting shapes from custom CBOR binary files.
  • Particles3D: Sprite particles now have support for the 3D environment lights.
  • Particles3D: New DynamicBurst element for declarative dynamic emitting and for emitting at trail start/end times.
  • Added ResourceLoader component for explicit setting of resource lifetimes (in Technical Preview)
  • PrincipledMaterial: Added support for ClearCoat, Transmission, and Refraction.
  • glTF2: Importers now support the following additional extensions: KHR_materials_clearcoat, KHR_materials_ior, KHR_materials_transmission, KHR_materials_volume

Qt WebEngine

  • Now builds with Python 3 instead of Python 2
  • Added API for replacing QML touch selection menu
  • Added new public CMake API:

Qt Data Visualization Module

Qt Positioning Module

  • New DirectionAccuracy attribute is added for Android and iOS platforms. It represents the accuracy of the provided bearing.

Qt Bluetooth Module

  • Extended the Windows implementation of QBluetoothLocalDevice. It reports the adapter state correctly, and allows to toggle its state. Support for connected/disconnected devices tracking is still missing.
  • Extended QBluetoothDeviceInfo API to expose Bluetooth Low Energy service data as published during the advertisement.

Qt Wayland Compositor Module

  • Added an API to create custom shell extensions. For instructions on usage, see the example.
  • Added a Qt Shell which supports all windowing system features available in Qt.
  • Added support for the presentation-time protocol.
  • Added support for multiple input method protocols in the same server, in order to support clients from different sources.

Platform Changes

Technology Preview Platforms

WebAssembly

Several improvements have been made for Qt for WebAssembly. See the platform documentation at Qt for WebAssembly for details.

  • Added support for copy/paste of images and html text to the system clipboard.
  • Added SIMD support. Note that enabling SIMD requires building Qt from source.
  • Added support for calling QEventLoop::exec() and QThread::exec() on secondary threads.
  • Added support for calling QEventLoop::exec() and QDialog::exec() on the main thread using Emscripten Asyncify. Note that enabling asyncify requires building Qt from source.
  • Drag-and-drop now works for asyncify-enabled builds.
  • Added support for tunneling TCP and UDP sockets over WebSockets, using Emscriptens Emulated POSIX TCP Sockets over WebSockets. This support is limited to async sockets on the main thread.

Windows on ARM

Windows on ARM64 remains in Technology Preview as problems with optimized builds of Qt could not be resolved yet.

Desktop Platforms

Mobile Platforms

Android

  • The In-App purchasing demo and Qt 3D: Planets QML Example had android specific improvements.
  • Updated Gradle to 7.2.0 and the Android Gradle Plugin (AGP) to 7.0.2 (requires JDK 11 or above).
  • Added missing _make_aab target for CMake Android projects.
  • Added multi-ABI build for CMake, see QT_ANDROID_ABIS.
  • QML modules are now staged to a common directory named "android-qml" under the user's build folder. This acts as a common import path for The androiddeployqt Tool.
  • The QML Test Bench now works for Android builds.

iOS

  • CMake-based projects now generate a default launch screen.

Embedded Platforms

Available under the Qt for Device Creation license.

Boot to Qt

  • Boot to Qt stack was updated to use Yocto 3.4 (honister).
  • Qt PDF and Qt Language Server were included in Boot to Qt stack.

Other

Wayland

  • Implemented support for DataDeviceV3 protocol.
  • Upgraded wl_seat support to version 7.
  • Added support for selecting input method protocol, if the server supports multiple interfaces. This can be done by setting QT_WAYLAND_TEXT_INPUT_PROTOCOL to the name of the protocol.

List of API Changes

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

Additions to Other Qt 6 Releases

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