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
andqfloat16 &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 deprecatedfbdev
model (or have problems withfbdev
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: