<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- whatsnew59.qdoc --> <title>What's New in Qt 5.9 | Qt 5.9</title> <link rel="stylesheet" type="text/css" href="style/offline-simple.css" /> <script type="text/javascript"> document.getElementsByTagName("link").item(0).setAttribute("href", "style/offline.css"); // loading style sheet breaks anchors that were jumped to before // so force jumping to anchor again setTimeout(function() { var anchor = location.hash; // need to jump to different anchor first (e.g. none) location.hash = "#"; setTimeout(function() { location.hash = anchor; }, 0); }, 0); </script> </head> <body> <div class="header" id="qtdocheader"> <div class="main"> <div class="main-rounded"> <div class="navigationbar"> <table><tr> <td ><a href="index.html">Qt 5.9</a></td><td >What's New in Qt 5.9</td></tr></table><table class="buildversion"><tr> <td id="buildversion" width="100%" align="right">Qt 5.9.4 Reference Documentation</td> </tr></table> </div> </div> <div class="content"> <div class="line"> <div class="content mainContent"> <div class="sidebar"> <div class="toc"> <h3><a name="toc">Contents</a></h3> <ul> <li class="level1"><a href="#new-features-in-qt-5-9">New Features in Qt 5.9</a></li> <li class="level2"><a href="#qt-core-module">Qt Core Module</a></li> <li class="level2"><a href="#qt-gui-module">Qt GUI Module</a></li> <li class="level2"><a href="#qt-multimedia-module">Qt Multimedia Module</a></li> <li class="level2"><a href="#qt-network-module">Qt Network Module</a></li> <li class="level2"><a href="#qt-qml-module">Qt QML Module</a></li> <li class="level2"><a href="#qt-quick-module">Qt Quick Module</a></li> <li class="level2"><a href="#qt-quick-controls-2-module">Qt Quick Controls 2 Module</a></li> <li class="level2"><a href="#qt-3d-module">Qt 3D Module</a></li> <li class="level2"><a href="#qt-bluetooth-module">Qt Bluetooth Module</a></li> <li class="level2"><a href="#qt-charts-module">Qt Charts Module</a></li> <li class="level2"><a href="#qt-location-module">Qt Location Module</a></li> <li class="level2"><a href="#qt-nfc-module">Qt NFC Module</a></li> <li class="level2"><a href="#qt-serialbus-module">Qt SerialBus Module</a></li> <li class="level2"><a href="#qt-virtual-keyboard-module">Qt Virtual Keyboard Module</a></li> <li class="level2"><a href="#qt-webengine-module">Qt WebEngine Module</a></li> <li class="level2"><a href="#qt-websockets-module">Qt WebSockets Module</a></li> <li class="level2"><a href="#embedded-platforms">Embedded Platforms</a></li> <li class="level1"><a href="#new-modules">New Modules</a></li> <li class="level1"><a href="#technology-preview-modules">Technology Preview Modules</a></li> <li class="level1"><a href="#platform-changes">Platform Changes</a></li> <li class="level1"><a href="#deprecated-functionality">Deprecated Functionality</a></li> <li class="level1"><a href="#list-of-api-changes">List of API Changes</a></li> <li class="level1"><a href="#additions-to-other-qt-5-releases">Additions to Other Qt 5 Releases</a></li> </ul> </div> <div class="sidebar-content" id="sidebar-content"></div></div> <h1 class="title">What's New in Qt 5.9</h1> <span class="subtitle"></span> <!-- $$$whatsnew59.html-description --> <div class="descr"> <a name="details"></a> <p>Qt 5.9 is a long-term support (LTS) release.</p> <a name="new-features-in-qt-5-9"></a> <h2 id="new-features-in-qt-5-9">New Features in Qt 5.9</h2> <a name="qt-core-module"></a> <h3 >Qt Core Module</h3> <ul> <li>Added the <code>qfloat16 f</code> and <code>qfloat16 &f</code> overload functions to the QDataStream class for writing a floating point number to the stream and reading it from the stream.</li> <li>Made the QProcessEnvironment class available on iOS, tvOS, watchOS, and <a href="platform-notes-vxworks.html">VxWorks</a>.</li> <li>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.</li> <li>Added the QOperatingSystemVersion class to provide convenient access to the operating system and version.</li> </ul> <a name="qt-gui-module"></a> <h3 >Qt GUI Module</h3> <ul> <li>Made the QPainter class' GL engine functional with core profile OpenGL contexts.</li> <li>Added the QImage::reinterpretAsFormat() function to change the image format without changing the data.</li> <li>Added support for <i>compute shaders</i> in QOpenGLShader::ShaderType and QOpenGLShaderProgram also with OpenGL ES 3.1 and newer.</li> <li>Enabled stem-darkening and gamma-correction on OpenType fonts on platforms that use <a href="qt-embedded-fonts.html#freetype">FreeType</a>, if supported.</li> </ul> <a name="qt-multimedia-module"></a> <h3 >Qt Multimedia Module</h3> <p>Added the following QML properties:</p> <ul> <li>CameraCapture.supportedResolutions</li> <li>CameraFlash.supportedModes</li> <li>MediaPlayer.notifyInterval (also for the Audio and Video types)</li> <li>Video.loops</li> </ul> <a name="qt-network-module"></a> <h3 >Qt Network Module</h3> <ul> <li>Added the QNetworkAccessManager::addStrictTransportSecurityHosts() function to support HSTS (HTTP Strict Transport Security) policies.</li> <li>Added the QNetworkAccessManager::redirectPolicy() function and the QNetworkRequest::RedirectPolicy enumeration to determine whether the Network Access API should automatically follow a HTTP redirect response.</li> </ul> <a name="qt-qml-module"></a> <h3 >Qt QML Module</h3> <ul> <li>Added support for ahead-of-time generation of QML type caches.</li> </ul> <a name="qt-quick-module"></a> <h3 >Qt Quick Module</h3> <ul> <li>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.</li> <li>Added an OpenVG backend for Qt Quick.</li> <li>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.</li> <li>Added a way to query information about the font actually used to render a <a href="whatsnew50.html#text">Text</a> type.</li> <li>Added an image provider that can share decoded image data and memory between processes.</li> </ul> <a name="qt-quick-controls-2-module"></a> <h3 >Qt Quick Controls 2 Module</h3> <ul> <li>Introduced new QML types: DelayButton, ScrollView.</li> <li>Added multi-touch support.</li> <li>Made the ComboBox type editable.</li> <li>Added the interactive property for making a Drawer type non-interactive and persistent.</li> <li>Enabled live value updates (by default) for the Slider, RangeSlider, and Dial types.</li> <li>Added dedicated notification signals for user interaction: AbstractButton::toggled(), Slider::moved(), SpinBox::valueModified(), and so on.</li> <li>Enabled incremental discrete scrolling with the ScrollBar type.</li> <li>Added enabling and disabling the swipe for the SwipeDelegate type. In addition, the swipe can now be opened programmatically.</li> <li>Added support for the vertical orientation to the SwipeView.orientation property.</li> </ul> <a name="qt-3d-module"></a> <h3 >Qt 3D Module</h3> <ul> <li>Added rendering Qt Quick 2 scenes to a texture and interacting with them within a 3D world.</li> <li>Added a Technical Preview of a new animation subsystem that enables non-blocking, keyframe animations on the threadpool and exporting from animations from Blender.</li> <li>Added Physics Based Rendering (PBR) material (QMetalRoughMaterial and QTexturedMetalRoughMaterial) to Qt3DExtras for improved appearance when used with environment maps.</li> <li>Added 3D text support to Qt3DExtras.</li> <li>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.</li> <li>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.</li> <li>Added distance field based 2D textured text that can be freely rotated but is based on planar geometry.</li> </ul> <a name="qt-bluetooth-module"></a> <h3 >Qt Bluetooth Module</h3> <ul> <li>Added Classic Bluetooth support for <a href="build-sources.html#winrt">WinRT</a>.</li> <li>Added Bluetooth LE Peripheral support for Android.</li> </ul> <a name="qt-charts-module"></a> <h3 >Qt Charts Module</h3> <ul> <li>Added support for minor grid lines for logarithmic axes.</li> <li>Added options for legend marker shapes to QLegend::MarkerShape.</li> <li>Added support for adding more than one bar series to a chart.</li> </ul> <a name="qt-location-module"></a> <h3 >Qt Location Module</h3> <ul> <li>Added support for rotating and tilting maps.</li> <li>Added touch gestures for rotating and tilting maps.</li> <li>Improved support for stacking multiple Map types.</li> <li>Added the MapCopyrightNotice type to flexibly position the copyrights of multiple map elements on top.</li> <li>Enabled styling the HTML copyright using CSS.</li> <li>Added support for handing the rendering of map items to the plugin.</li> <li>Added the <i>MapboxGL</i> plugin that is based on the <code>mapbox-gl-native</code> mapping engine.</li> <li>Added the Map::fitViewportToVisibleMapItems() method to only consider visible items when fitting the viewport.</li> <li>Added the MapItemGroup type to combine multiple map items in a separate QML file.</li> <li>Added the Map.fieldOfView property to control the camera's field of view when the map is tilted.</li> <li>Added the MapParameter type to expose and control plugin-specific runtime functionality.</li> </ul> <a name="qt-nfc-module"></a> <h3 >Qt NFC Module</h3> <ul> <li>Enabled using NFC when running as an Android service.</li> <li>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.</li> </ul> <a name="qt-serialbus-module"></a> <h3 >Qt SerialBus Module</h3> <ul> <li>Added the CAN FD Bitrate Switch (BRS) and Error State Indicator (ESI) flags to QCanBusFrame (QCanBusFrame::hasBitrateSwitch() and QCanBusFrame::hasErrorStateIndicator()).</li> <li>Added QCanBusDeviceInfo for information about available CAN interfaces.</li> <li>Added a plugin to support SYS-TEC electronic CAN adapters on Windows.</li> </ul> <a name="qt-virtual-keyboard-module"></a> <h3 >Qt Virtual Keyboard Module</h3> <ul> <li>Added support for selection handles for the dedicated (desktop) keyboard.</li> <li>Changed the behavior of the shift handler to only activate caps lock if the shift key is double-clicked.</li> <li>Added support for external keyboard layouts, which allows overriding and exclusion of the built-in keyboard layouts.</li> <li>Added a language selection popup for faster selection of the input language.</li> <li>Added support for the automatic selection of the only remaining word in the suggestion list.</li> <li>Made the word candidate list automatically hidden when inactive.</li> <li>Added full screen input mode.</li> </ul> <a name="qt-webengine-module"></a> <h3 >Qt WebEngine Module</h3> <ul> <li>Based on Chromium 56.</li> <li>Switched internally to the new Chromium build-system GN.</li> <li>Added loading with HTTP POST.</li> <li>Added support for user scripts with QQuickWebEngineProfiles and for using QQuickWebEngineUserScripts from C++.</li> <li>DownloadItems now get a reason when they are interrupted or fail.</li> </ul> <a name="qt-websockets-module"></a> <h3 >Qt WebSockets Module</h3> <ul> <li>Added support for handling external QTcpSocket objects.</li> </ul> <a name="embedded-platforms"></a> <h3 >Embedded Platforms</h3> <ul> <li>Added experimental DRM dumb buffer support to the <code>linuxfb</code> platform plugin, to help devices that do not support the deprecated <code>fbdev</code> model (or have problems with <code>fbdev</code> emulation).</li> <li>Added support for filtering and prediction of touch events to the <code>evdevtouch</code> plugin.</li> </ul> <a name="new-modules"></a> <h2 id="new-modules">New Modules</h2> <ul> <li>Qt Gamepad - Enables Qt gaming applications to respond to gamepad input.</li> </ul> <p>This module was previously released as a technology preview and is now a fully supported Qt add-on module.</p> <a name="technology-preview-modules"></a> <h2 id="technology-preview-modules">Technology Preview Modules</h2> <ul> <li>Qt Network Authorization - Online authorization support with OAuth protocol, versions 1 and 2.</li> <li>Qt Remote Objects - Sharing QObject interfaces (signals, slots, and properties) between processes or devices,</li> <li>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.</li> </ul> <a name="platform-changes"></a> <h2 id="platform-changes">Platform Changes</h2> <ul> <li>Removed support for <a href="build-sources.html#winrt">WinRT</a> on Windows 8.1.</li> <li>Debug builds on GCC platforms now use <code>-Og</code> optimizations by default. This can be disabled with the configure flag <code>-no-optimize-debug</code>.</li> </ul> <a name="deprecated-functionality"></a> <h2 id="deprecated-functionality">Deprecated Functionality</h2> <ul> <li>Qt Script</li> </ul> <p>Deprecated modules are still included in Qt 5.9, but are considered for removal in future releases.</p> <a name="list-of-api-changes"></a> <h2 id="list-of-api-changes">List of API Changes</h2> <p>The pages below contain a list of API changes in Qt 5.9:</p> <ul> <li><a href="newclasses59.html">New Classes and Functions in Qt 5.9</a></li> <li><a href="obsoleteclasses.html">Obsolete Classes</a></li> </ul> <a name="additions-to-other-qt-5-releases"></a> <h2 id="additions-to-other-qt-5-releases">Additions to Other Qt 5 Releases</h2> <ul> <li><a href="whatsnew58.html">What's New in Qt 5.8</a></li> <li><a href="whatsnew57.html">What's New in Qt 5.7</a></li> <li><a href="whatsnew56.html">What's New in Qt 5.6</a></li> <li><a href="whatsnew55.html">What's New in Qt 5.5</a></li> <li><a href="whatsnew54.html">What's New in Qt 5.4</a></li> <li><a href="whatsnew53.html">What's New in Qt 5.3</a></li> <li><a href="whatsnew52.html">What's New in Qt 5.2</a></li> <li><a href="whatsnew51.html">What's New in Qt 5.1</a></li> <li><a href="whatsnew50.html">What's New in Qt 5.0</a></li> </ul> </div> <!-- @@@whatsnew59.html --> </div> </div> </div> </div> </div> <div class="footer"> <p> <acronym title="Copyright">©</acronym> 2017 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners.<br> The documentation provided herein is licensed under the terms of the <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation License version 1.3</a> as published by the Free Software Foundation.<br> 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. </p> </div> </body> </html>