What's New in Qt 5.9 | Qt 5.15

- Qt 5.15
- What's New in Qt 5.9
- Qt 5.15.16 Reference Documentation

# What's New in Qt 5.9

Qt 5.9 is a long-term support (LTS) release.

## New Features in Qt 5.9

### Qt Core Module

- Added the `qfloat16 f` and `qfloat16 &f` overload functions to the QDataStream class for writing a floating point number to the stream and reading it from the stream.
- Made the QProcessEnvironment class available on iOS, tvOS, watchOS, and VxWorks.
- QRegularExpression now requires the PCRE2 library version 10.20, or later. Support for the PCRE1 library was dropped. A copy of PCRE2 is shipped with Qt and will automatically be used on the platforms that lack it.
- Added the QOperatingSystemVersion class to provide convenient access to the operating system and version.

### Qt GUI Module

- Made the QPainter class' GL engine functional with core profile OpenGL contexts.
- Added the QImage::reinterpretAsFormat() function to change the image format without changing the data.
- Added support for compute shaders in QOpenGLShader::ShaderType and QOpenGLShaderProgram also with OpenGL ES 3.1 and newer.
- Enabled stem-darkening and gamma-correction on OpenType fonts on platforms that use FreeType, if supported.

### Qt Multimedia Module

Added the following QML properties:

- CameraCapture.supportedResolutions
- CameraFlash.supportedModes
- MediaPlayer.notifyInterval (also for the Audio and Video types)
- Video.loops

### Qt Network Module

- Added the QNetworkAccessManager::addStrictTransportSecurityHosts() function to support HSTS (HTTP Strict Transport Security) policies.
- Added the QNetworkAccessManager::redirectPolicy() function and the QNetworkRequest::RedirectPolicy enumeration to determine whether the Network Access API should automatically follow a HTTP redirect response.

### Qt QML Module

- Added support for ahead-of-time generation of QML type caches.

### Qt Quick Module

- Enabled caching OpenGL shader program binaries used by the Qt GUI module (QPainter's GL paint engine) and the Qt Quick scenegraph on disk to improve application-startup and view-initialization times.
- Added an OpenVG backend for Qt Quick.
- Enabled making window-screen associations directly from QML by using Window.screen and Qt.application.screens. This enables creating multi-screen aware applications for desktop and embedded without involving C++ code.
- Added a way to query information about the font actually used to render a Text type.
- Added an image provider that can share decoded image data and memory between processes.

### Qt Quick Controls 2 Module

- Introduced new QML types: DelayButton, ScrollView.
- Added multi-touch support.
- Made the ComboBox type editable.
- Added the interactive property for making a Drawer type non-interactive and persistent.
- Enabled live value updates (by default) for the Slider, RangeSlider, and Dial types.
- Added dedicated notification signals for user interaction: AbstractButton::toggled(), Slider::moved(), SpinBox::valueModified(), and so on.
- Enabled incremental discrete scrolling with the ScrollBar type.
- Added enabling and disabling the swipe for the SwipeDelegate type. In addition, the swipe can now be opened programmatically.
- Added support for the vertical orientation to the SwipeView.orientation property.

### Qt 3D Module

- Added rendering Qt Quick 2 scenes to a texture and interacting with them within a 3D world.
- Added a Technical Preview of a new animation subsystem that enables non-blocking, keyframe animations on the threadpool and exporting from animations from Blender.
- Added Physics Based Rendering (PBR) material (QMetalRoughMaterial and QTexturedMetalRoughMaterial) to Qt3DExtras for improved appearance when used with environment maps.
- Added 3D text support to Qt3DExtras.
- Added the LevelOfDetail type to control the representation of an entity based on distance from the observer or size on the screen. It comes with a convenience loader class that loads different QML files.
- Made the Mesh type plugin based. It comes with plugins for the Wavefront OBJ, PLY and FBX formats and makes it easy to add other formats.
- Added distance field based 2D textured text that can be freely rotated but is based on planar geometry.

### Qt Bluetooth Module

- Added Classic Bluetooth support for WinRT.
- Added Bluetooth LE Peripheral support for Android.

### Qt Charts Module

- Added support for minor grid lines for logarithmic axes.
- Added options for legend marker shapes to QLegend::MarkerShape.
- Added support for adding more than one bar series to a chart.

### Qt Location Module

- Added support for rotating and tilting maps.
- Added touch gestures for rotating and tilting maps.
- Improved support for stacking multiple Map types.
- Added the MapCopyrightNotice type to flexibly position the copyrights of multiple map elements on top.
- Enabled styling the HTML copyright using CSS.
- Added support for handing the rendering of map items to the plugin.
- Added the MapboxGL plugin that is based on the `mapbox-gl-native` mapping engine.
- Added the Map::fitViewportToVisibleMapItems() method to only consider visible items when fitting the viewport.
- Added the MapItemGroup type to combine multiple map items in a separate QML file.
- Added the Map.fieldOfView property to control the camera's field of view when the map is tilted.
- Added the MapParameter type to expose and control plugin-specific runtime functionality.

### Qt NFC Module

- Enabled using NFC when running as an Android service.
- Added support for communicating with ISO-DEP, NFC-A, NFC-B, NFC-F, and NFC-V tags or smartcards, such as the German eID card, using QNearFieldTarget::sendCommand() on Android.

### Qt SerialBus Module

- Added the CAN FD Bitrate Switch (BRS) and Error State Indicator (ESI) flags to QCanBusFrame (QCanBusFrame::hasBitrateSwitch() and QCanBusFrame::hasErrorStateIndicator()).
- Added QCanBusDeviceInfo for information about available CAN interfaces.
- Added a plugin to support SYS-TEC electronic CAN adapters on Windows.

### Qt Virtual Keyboard Module

- Added support for selection handles for the dedicated (desktop) keyboard.
- Changed the behavior of the shift handler to only activate caps lock if the shift key is double-clicked.
- Added support for external keyboard layouts, which allows overriding and exclusion of the built-in keyboard layouts.
- Added a language selection popup for faster selection of the input language.
- Added support for the automatic selection of the only remaining word in the suggestion list.
- Made the word candidate list automatically hidden when inactive.
- Added full screen input mode.

### Qt WebEngine Module

- Based on Chromium 56.
- Switched internally to the new Chromium build-system GN.
- Added loading with HTTP POST.
- Added support for user scripts with QQuickWebEngineProfiles and for using QQuickWebEngineUserScripts from C++.
- DownloadItems now get a reason when they are interrupted or fail.

### Qt WebSockets Module

- Added support for handling external QTcpSocket objects.

### Embedded Platforms

- Added experimental DRM dumb buffer support to the `linuxfb` platform plugin, to help devices that do not support the deprecated `fbdev` model (or have problems with `fbdev` emulation).
- Added support for filtering and prediction of touch events to the `evdevtouch` plugin.

## New Modules

- Qt Gamepad - Enables Qt gaming applications to respond to gamepad input.

This module was previously released as a technology preview and is now a fully supported Qt add-on module.

## Technology Preview Modules

- Qt Network Authorization - Online authorization support with OAuth protocol, versions 1 and 2.
- Qt Remote Objects - Sharing QObject interfaces (signals, slots, and properties) between processes or devices,
- Qt Speech - Text to speech and speech recognition functionality. Currently only the text to speech features are released. Includes backends for several speech synthesizers on Windows, Linux, macOS, and Android.

## Platform Changes

- Removed support for WinRT on Windows 8.1.
- Debug builds on GCC platforms now use `-Og` optimizations by default. This can be disabled with the configure flag `-no-optimize-debug`.

## Deprecated Functionality

- Qt Script

Deprecated modules are still included in Qt 5.9, but are considered for removal in future releases.

## List of API Changes

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

- New Classes and Functions in Qt 5.9
- Obsolete Classes

## Additions to Other Qt 5 Releases

- 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