New Features (within existing modules)
- Qt Core
- Added new qfloat16 class.
- QProcessEnvironment is now available on iOS, tvOS, watchOS, and VxWorks.
- QRegularExpression now requires the PCRE2 library, at least version 10.20. Support for the PCRE1 library has been dropped. A copy of PCRE2 is shipped with Qt and will automatically be used on those platforms which lack it.
- QOperatingSystemVersion is new class for providing convinient access to operating system and version
- Qt GUI
- QPainter’s GL engine is now functional with core profile OpenGL contexts as well.
- QImage introduced reinterpretAsFormat to change format without changing data.
- Compute shaders are now supported in QOpenGLShader and QOpenGLShaderProgram also with OpenGL ES 3.1 and newer.
- Platforms using Freetype now does stem-darkening and gamma-correction on OpenType fonts if FreeType supports it.
- Qt QML
- Add support for ahead-of-time generation of QML type caches
- Qt Quick
- OpenGL shader program binaries used by QtGui (QPainter’s GL paint engine) and the Qt Quick scenegraph are now cached on disk, improving application startup and view initialization times.
- Added an OpenVG backend for Qt Quick.
- Window-screen associations can now be made directly from QML via Window.screen and Qt.application.screens. This allows 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 element.
- Added an image provider which can share decoded image data and memory between processes.
- Qt Quick Controls 2
- Introduced new QML types: DelayButton, ScrollView
- Added multi-touch support to buttons and sliders
- Editable ComboBox
- Non-interactive persistent Drawer
- Live value updates (by default) for Slider, RangeSlider, and Dial
- Sliders, dials, and scrollbars now react immediately when using a mouse. A drag threshold applies only on touch, to avoid conflicting with flickables.
- Dedicated signals for notifying user interaction
- AbstractButton::toggled(), Slider::moved(), SpinBox::valueModified(), …
- Incremental/discrete scrolling with ScrollBar
- SwipeDelegate allows enabling/disabling the swipe, and opening programmatically
- Vertical SwipeView
- Qt WebEngine
- Updated backend to Chromium 56
- Switched internally to the new Chromium build-system GN
- API for loading with HTTP POST
- QQuickWebEngineProfiles can now have user-scripts and QQuickWebEngineUserScripts is now available from C++.
- DownloadItems now get a reason when being interrupted or failing.
- Qt SerialBus
- Added CAN FD Bitrate Switch (BRS) and Error State Indicator (ESI) flags to QCanBusFrame
- Added QCanBusDeviceInfo for information about available CAN interfaces
- Added plugin to support SYS-TEC electronic CAN adapters on Windows
- Qt Location
- Support for map tilting
- Support for map rotation
- Touch gestures for rotating and tilting the map
- Improved support for stacking multiple Map elements
- New element MapCopyrightNotice to flexibly position the copyrights of multiple map elements on top
- HTML copyright can now be styled using CSS
- Support for handing the rendering of map items to the plugin
- New “MapboxGL” plugin, based on the mapbox-gl-native mapping engine
- New method fitViewportToVisibleMapItems to only consider visible items when fitting the viewport
- New element MapItemGroup, to combine multiple map items in a separate qml file
- Added a field of view property to the Map element to control the camera’s field of view when the map is tilted
- New element MapParameter, to expose and control plugin-specific functionalities at runtime
- Lower zoom level tiles are now used to approximate higher zoom levels, until these become available
- Applications using QtPositioning on iOS can now collect data while in background
- One new geoservice plugin, “itemsoverlay”, providing an empty map, that can be used as an overlay where to add map items without occluding what’s behind.
- Qt Multimedia
- New QML properties:
- MediaPlayer.notifyInterval (also for Audio and Video)
- New QML properties:
- Qt Network
- Added HSTS support (HTTP Strict Transport Security) to QNetworkAccessManager
- Added redirects policy to QNetworkAccessManager (ManulRedirectsPolicy, NoLessSafeRedirectsPolicy, SameOriginRedirectsPolicy, UserVerifiedRedirectsPolicy)
- Qt NFC
- Allow using NFC when running as an Android service
- Added support to communicate with ISO-DEP, NFC-A, NFC-B, NFC-F and NFC-V tags/smartcards, e.g. the German eID card, using QNearFieldTarget::sendCommand() on Android
- Qt WebSockets
- Added support to handle external QTcpSocket
- Qt Charts
- Added support for minor grid lines for logarithmic axes
- Added options for legend marker shapes
- Added support for more than one bar series per chart
- Qt 3D
- Render Qt Quick 2 scenes to a texture and interact with them within 3D world
- Technical Preview of new animation subsystem. Non-blocking, keyframe animations on the threadpool. Export from animations from Blender.
- Physics Based Rendering (PBR) material in Qt3DExtras. Greatly improved appearance when used with environment maps.
- 3D text support in Qt3DExtras
- Level of Detail component allows toggling based on projected screen size or distance. Comes with convenience loader class to load different QML files for you.
- Mesh is now plugin based. Comes with plugins for Wavefront OBJ, PLY and FBX formats. Easy to add others.
- Distance field based 2D textured text. Can be freely rotated but is based on planar geometry.
- Qt Virtual Keyboard
- Added support for selection handles for the dedicated (desktop) keyboard.
- Changed behavior of 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 language selection popup for faster selection of input language.
- Added support for automatic selection of the only remaining word in the suggestion list.
- The word candidate list is now automatically hidden when inactive.
- Added full screen input mode
- Embedded platforms
- Added experimental DRM dumb buffer support to the linuxfb platform plugin, in order to help devices that do not support the deprecated fbdev model (or have problems with fbdev emulation).
- The evdevtouch plugin supports filtering and prediction of touch events.
- Qt Bluetooth
- Classic Bluetooth support for WinRT added
- Android Peripheral support added
- Qt Gamepad – A module to expose gamepad controller input to C++ and QML applications on a wide variety of platforms.
- Added support for INTEGRITY real-time operating system
- Added support for QNX version 7.0
- Removed support for WinRT on Windows 8.1
- Debug builds on GCC platforms now use -Og optimizations by default. Can be disabled with configure flag -no-optimize-debug.
- Release builds can now be optimized for size (-Os on gcc/clang, -O1 MSVC). Saves 5-20% on binary size. Is off default and enabled with -optimize-size.
Technology Preview Modules
- Qt Remote Objects – A module that allows you to easily share QObject interfaces (Signals/Slots/Properties) between processes or devices
- Qt Network Authentication (TP2) – Provides support for OAuth1 & OAuth2
- Qt Speech (TP2) – Continues as tech preview, issues with packaging on Linux resolved, MinGW now supported.
The following modules are part of Qt 5.9 release, but deprecated and considered for removal in subsequent releases of Qt:
- Qt Script