Qt 5.9 introduces many new features and improvements as well as bugfixes over the 5.8.x series. For more details, refer to the online documentation included in this distribution. The documentation is also available online: http://doc.qt.io/qt-5/index.html The Qt version 5.9 series is binary compatible with the 5.8.x series. Applications compiled for 5.8 will continue to run with 5.9. Some of the changes listed in this file include issue tracking numbers corresponding to tasks in the Qt Bug Tracker: https://bugreports.qt.io/ Each of these identifiers can be entered in the bug tracker to obtain more information about a particular change. **************************************************************************** * Important Behavior Changes * **************************************************************************** * qmlInfo now reports messages with a QtMsgType of QtInfoMsg instead of QtWarningMsg. To continue to send warnings, callers should migrate to the newly-introduced qmlWarning function. **************************************************************************** * Library * **************************************************************************** QtQml ----- - The garbage collector has been rewritten to provide better memory consumption, and improved, more predictable performance for JavaScript code. - Array.prototype.find and Array.prototype.findIndex from ES6 are now implemented. - Introduced qmlRegisterModule() that can be used to make a certain module version available, even if no types or revisions are registered for that version. - Introduced qmlDebug & qmlWarning functions to qqmlinfo.h, in addition to the pre-existing qmlInfo function. As a side effect, QQmlError has also gained messageType() and setMessageType(). - [QTBUG-52013] Added QQmlEngine::offlineStorageDatabaseFilePath(dbName) to allow getting the actual storage path for a particular database. - [QTBUG-53091] Introduced Qt.application.displayName, to map the QGuiApplication::applicationDisplayName property to QML. - [QTBUG-45316] QML Settings has been fixed to handle JavaScript arrays. QtQuick ------- - Global: * Improved stability of Animator's internals. * [QTBUG-55496] Added a disk cache for OpenGL shaders to QtQuick. * [QTBUG-58845] QWheelEvent delivered to all QQuickItems will now have a correct global position. * [QTBUG-57910] Touch events are now correctly ungrabbed if the touch event was stolen by a parent item, such as a Flickable. * [QTBUG-57098] Added Keys::shortcutOverride signal to allow prevention of e.g. Shortcut from stealing key events. * [QTBUG-56279] Added a shared memory image provider to conserve memory when several processes use the same local image files. - Window: * [QTBUG-60232] Added QQuickWindow::sceneGraphBackend() to allow querying which scene graph rendering backend is in use. * [QTBUG-56115] Added a screen property to Window, which can be used to declaratively associate a window with a specific screen. This is useful on multi-screen embedded systems. Added Qt.application.screens as an array of screens from which one can be chosen to assign to a Window. Added virtualX and virtualY properties to Screen to enable querying the screen's position within the virtual desktop. - Items: * [QTBUG-38515] Added horizontalOvershoot and verticalOvershoot properties to Flickable, for use in implementing custom boundary actions and effects. * [QTBUG-44762] Added a forceLayout method to Positioner types (Column, Row, Flow, Grid) to force positioning of children to happen earlier. Additionally, a positioningComplete signal has been added. * [QTBUG-57203] Added TextInput::textEdited signal to distinguish user edits from programmatical text changes. * [QTBUG-42074][QTBUG-57003] Added support for characters in Private Use Area, as well as zero-width joiners and zero-width non-joiners for TextInput and TextEdit. * [QTBUG-47662] Added MouseArea::pressAndHoldInterval to allow control over the elapsed time before the pressAndHold signal is emitted. * Item::grabToImage on an Image element will now work regardless of the Image's sourceSize or cache properties. * [QTBUG-52553][QTBUG-56501] Made it possible to enable horizontal flicking in a vertical ListView, and vice versa. The only thing apps must do is to specify the desired flick direction and the content width (vertical ListView) or content height (horizontal ListView), which is not calculated by ListView. * Added Shortcut::sequences, to provide support for multiple different shortcut sequences in a single Shortcut. * Added rotation, ellipseDiameters and uniqueId properties to MultiPointTouchArea.TouchPoint, and deprecated the area property. A TouchPoint is now modeled as an ellipse centered on a point, possibly rotated, depending on what the hardware and drivers support. Android and the TUIO plugin support rotation and ellipseDiameters, for example. The uniqueId is so far applicable only to the use of fiducials (tokens, knobs or game pieces with hardware-based identification) on a TUIO touch surface. - Accessibility: * [QTBUG-58340] Fixed focus handling so that keyboard and VoiceOver's virtual focus are in sync (QTBUG-58340). - Text: * Deprecated doLayout() in favor of forceLayout(), to improve consistency now that more types (Positioners, Layouts, etc) have a forceLayout() method. * [QTBUG-51133] Added fontInfo property to Text type, providing a way to query properties of the actual font used for presenting the text. * [QTBUG-58852] Text items with a renderType of Text.NativeRendering will no longer stop rendering with a large number of characters. QtTest ------ - [QTBUG-23083] Added TestCase::touchEvent to support simulating touch events in tests. - [QTBUG-56361] Added createTemporaryObject() and createTemporaryQmlObject() functions to ensure that dynamically created objects can be destroyed at the end of each test function.