What's New in Qt 5.14 | Qt 5.15

- Qt 5.15
- What's New in Qt 5.14
- Qt 5.15.18 Reference Documentation

# What's New in Qt 5.14

## New Features in Qt 5.14

### Qt 3D Module

- Overhauled the threading architecture. This includes the removal of the aspect thread.
- Overhauled the frontend/backend node sync.
- Enabled QTransform to have access to the world matrix.
- Introduced Scene3DView.
- Scene3D is now in sync with QtQuick, and can render as an underlay without an FBO.

### Qt Bluetooth Module

- Introduced a new, optional Win32 backend with support for Windows 7 and 8. This backend is not built by default, nor is it part of the pre-built packages.
- QLowEnergyController: Introduced AuthorizationError.
- Added the ability to include multiple manufacturer data entries per manufacturer ID.

### Qt Core Module

- Added support in QCalendar for calendars other than Gregorian, by implementation of suitable backends.
- Added backends to implement the Gregorian, Jalali (Persian), Islamic Civil, Milankovic, and Julian calendars. We look forward to other contributions.
- Added QColorConstants, a namespace providing constexpr QColor instances that don't cost any runtime overhead.

### Qt GUI Module

- Updated High-DPI support:
  - Introduced non-integer scale factors (for example, a scale factor of 150%) that applications can opt-in to use. Use QGuiApplication::highDpiScaleFactorRoundingPolicy or QT_SCALE_FACTOR_ROUNDING_POLICY to set the rounding policy.
  - Added the QT_ENABLE_HIGHDPI_SCALING environment variable, enabling high-DPI scaling based on display DPI. This replaces QT_AUTO_SCREEN_SCALE_FACTOR (now deprecated), and corresponds to the Qt::AA_EnableHighDpiScaling application attribute.
  - Added cross-platform support for the QT_FONT_DPI environment variable, for the purpose of developing and testing with specific DPI values.
- Added color-space support for images; reading and writing color-spaces from JPEG, PNG, WebP and TIFF images, and performing color-space transformation on images.
- Improvements to QTextDocument and QTextTable styling:
  - Added per-edge border styling via QTextTableCellFormat.
  - Added border-collapse mode.
  - Added support for (partial) HTML table style import and export.
- Added support for reading and writing Markdown format to QTextDocument, as an alternative to HTML.

### Qt Multimedia Module

- Added QVideoFrame::Format_YUV422P.
- Introduced support for the GStreamer OpenGL plugin.

### Qt Network Module

- Introduced the HTTP/2 Configuration API.
- Introduced network connectivity monitoring.
- Added support for SPNEGO/Negotiate proxy authentication to QAuthenticator. This requires KRB5 GSSAPI to work.

### Qt QML Module

- Added qmlRegisterSingletonInstance() function. This allows to expose a QObject as a singleton to QML, without having to create a factory function as required by qmlRegisterSingletonType(). It is meant as a type safe replacement of setContextProperty() in common usages.
- Added qmlRegisterAnonymousType() as a replacement for qmlRegisterType(). It allows to specify the URI and major version, which enables better tooling support.
- Added an experimental -U option to `qmllint`. When set, access to unqualified identifiers generates warnings.

### Qt Quick Module

- Added a preview of the graphics API independent scenegraph renderer as an opt-in feature. This allows running qualifying Qt Quick applications on top of Vulkan, Metal, or Direct3D 11, instead of OpenGL. Currently supported platforms:
  - Windows 10 (Direct3D)
  - Linux with X11/xcb (Vulkan)
  - macOS (Metal or Vulkan with MoltenVK)
  - Android 7.0+ (Vulkan)
- Added support for the Markdown format (including CommonMark and GitHub dialects) to Text and TextEdit as an alternative to HTML. This includes the GitHub checklist extension, allowing to toggle checkboxes in a TextEdit.
- Switched TextEdit to use an I-beam cursor by default, and a pointing-hand cursor when hovering over a checkbox or a link. Default cursors can be overridden.
- Added WheelHandler, an event handler for the mouse wheel, and optionally for emulated mouse wheel events coming from a trackpad.
- Added BoundaryRule in Qt.labs.animation: a PropertyValueInterceptor that restricts the range of values a numeric property can have, applies "resistance" when overshooting a value, and provides the ability to animate it back to its normal range. It's particularly useful in combination with WheelHandler, providing physics similar to Flickable.
- Added currentFrame and frameCount properties to Image and BorderImage, just as AnimatedImage has; for example, this allows choosing an individual icon from an .ICO file that contains multiple icons.
- Added PathPolyline and PathMultiline as additional ways of drawing and/or filling arbitrary polygons and sets of polygons with Qt Quick Shapes.

### Qt Serial Bus Module

- Added operators to compare QCanBusDevice::Filter for equality or inequality.
- Added the QCanBusDevice::OperationError and QCanBusDevice::TimeoutError codes to signal operation and timeout errors.
- Added the QCanBusDevice::busStatus() function to query the bus status from the CAN bus device.
- Added the QCanBusDevice::resetController() function to release the CAN controller from bus off state.
- SocketCAN: Added the configuration parameter QCanBusDevice::ProtocolKey to use another protocol inside the protocol family PF_CAN.
- SocketCAN: If `libsocketcan` is available, the CAN bus bitrate can be retrieved and set at runtime.
- PeakCAN: Added support for PCAN-USB devices on macOS by using the MacCAN library.
- Exposed the underlying QIODevice used for Modbus communication. This enables, for example, setting the serial port hardware flow control (RTS/CTS).

### Qt Test Module

- Introduced `initMain()` function to perform any initialization that must happen before QApplication exists.

### Qt WebEngine Module

- Updated to Chromium 77.
- Added a new API to control the life-cycle of QWebEnginePage.

### Qt Widgets Module

- Added support for the Markdown format (including CommonMark and GitHub dialects) to QTextEdit and QTextBrowser as an alternative to HTML. This includes the GitHub checklist extension, allowing to toggle checkboxes if the widget is editable. QTextBrowser::setSource() detects Markdown based on the file extension.

## Platform Changes

Android

- Android now requires NDKr20+.
- Added multi-ABI build in one go. By default, all Android supported ABIs (arm64-v8a, armeabi-v7a, x86_64, x86) are built. ANDROID_ABIS qmake variable can be used for selecting specific ABIs.
- Added support for the new AAB package format, which allows Google Play deployment of a single application bundle containing binaries for all supported ABIs.

## New Modules

- Qt Quick Timeline - Enables keyframe-based animations and parameterization.

## Technology Preview Modules

- Qt Quick 3D - A high-level API for creating 3D content for user interfaces from Qt Quick.

## Qt for Automation Modules

Qt KNX

- Extended support for KNXnet/IP Core V2 (discovery, tunneling, routing, and security).

Qt MQTT

- Added support for using QSslConfiguration when creating encrypted connections.
- Added autoKeepAlive property to enable manual connectivity checks.

Qt OPC UA

- Added GDS client support as a technology preview.
- Updated the 3rd-party open62541 implementation to version 1.0.

Qt CoAP

- This module is now out of technology preview status.

## Deprecated Modules

The following modules are part of Qt 5.14 release, but are deprecated and considered for removal in subsequent releases of Qt:

- Qt Script
- Qt Quick Controls 1
- Qt XmlPatterns

## List of API Changes

The pages below contain a list of API changes in Qt 5.14:

- New Classes and Functions in Qt 5.14
- Obsolete Classes

## Additions to Other Qt 5 Releases

- What's New in Qt 5.13
- What's New in Qt 5.12
- What's New in Qt 5.11
- What's New in Qt 5.10
- What's New in Qt 5.9
- What's New in Qt 5.8
- What's New in Qt 5.7
- What's New in Qt 5.6
- What's New in Qt 5.5
- What's New in Qt 5.4
- What's New in Qt 5.3
- What's New in Qt 5.2
- What's New in Qt 5.1
- What's New in Qt 5.0