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:
Additions to Other Qt 5 Releases
© 2021 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.