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:

Qt Network Module

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

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

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:

Additions to Other Qt 5 Releases