Qt 5.11 introduces many new features and improvements as well as bugfixes over the 5.10.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.11 series is binary compatible with the 5.10.x series. Applications compiled for 5.10 will continue to run with 5.11. 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 * **************************************************************************** * QML module plugins used to be limited to type registrations in the primary module namespace in the virtual registerTypes() function. Module authors worked around this limitation by placing necessary internal type registrations into initializeEngine() that may cause memory leaks. Therefore this restriction has been moved and types in any (non-protected) namespaces can be registered in the registerTypes() function. * In Qt 5.11 and newer versions, QML plugin modules are available with the same minor version as the Qt release minor version number. For example it's possible to import QtQuick.Window 2.11 or import QtQuick.Layouts 1.11 even though there haven't been any API changes in these modules for Qt 5.11, and the maximum possible import version will automatically increment in future Qt versions. This is intended to reduce confusion. **************************************************************************** * Library * **************************************************************************** QtQml ----- - Qt Qml uses a completely new compiler pipeline to compile Javascript (and QML) first into bytecode and then JIT heavily used functions into assembly. * Lots of cleanups and performance improvement to the way function calls and Javascript scopes are being handled. * Improved performance of JS property lookups. * A new bytecode format that is very compact, saving memory in many cases. * significantly faster bytecode interpreter than in earlier versions of Qt, in many cases reaching almost the performance of the old JIT. * A new JIT that works on top of the bytecode interpreter and only compiles hot functions into assembly. * Overall test results show almost a doubling of the JS performance on platforms where we can't use a JIT (iOS and WinRT) compared to 5.10. * With the new JIT, JS performance is usually around 10-40% faster than in older Qt versions (depending on the use case). - The commercial only Qt Quick Compiler has been removed and replaced with a common solution that works in both the open source and commercial version of Qt. No code changes are needed for users of the old compiler. - Fix qmlplugindump to work correctly with shadow builds. - Fixed creation of QWidgets in QML. - Various fixes to the debugging bridge. - ListModel * Support assignment of function declarations in ListElement, to allow for models with actions. QtQuick ------- - QQuickWindow: * [QTBUG-66329] We no longer synthesize redundant mouse events based on touch events that come from a trackpad which can generate mouse events. - Item: * [QTBUG-20524] Added a containmentMask property. This allows any QObject which defines Q_INVOKABLE bool contains(const QPointF &point) (including a Shape) to mask the area of an Item that will be sensitive to mouse and touch events. - AnimatedSprite: * [QTBUG-36341] AnimatedSprite's implicitWidth and implicitHeight are now based on frameWidth and frameHeight, respectively. This means it is no longer necessary to explicitly size AnimatedSprite. - Image: * [QTBUG-66127] Support detection of suitable file extension. * Add support for ktx files containing compressed textures. * Add experimental automatic atlasing of ETC-compressed textures (can be enabled with QSG_ENABLE_COMPRESSED_ATLAS=1). * [QTBUG-67019] SVG images are now scaled up if the source size is larger than the original size. * [QTBUG-65789] SVG images are rendered with the correct aspect ratio when width or height is set to zero. - AnimatedImage: * Added a speed property. It's also OK to set it to 0 to pause the animation. * There is now an example to demonstrate usage of AnimatedImage. * [QTBUG-62913] frameCount now has a NOTIFY signal to avoid binding warnings. - Path: * [QTBUG-62684] Add new PathAngleArc type. - Shape: * A containsMode property is added. If it is set to FillContains, then Shape.contains() returns true only within the visible bounds, so its Pointer Handlers also respond only within those bounds. - ShapePath: * Improved performance for complex paths. - Text: * [QTBUG-60328][QTBUG-67145] Fixed Text with ElideRight not being rendered when reparented. * [QTBUG-67007] Fixed non-integer scale factors with Text native rendering. - Pointer Handlers: * Added singleTapped and doubleTapped convenience signals to TapHandler. * PointerHandlers implement QQmlParserStatus, so that subclasses can have custom initialization in componentComplete() (just as Items can). * [QTBUG-65651] Restore 5.9 behavior: if an Item has no PointerHandlers, childMouseEventFilter() will not be called during post-delivery of an unhandled event. * TapHandler.gesturePolicy is now DragThreshold by default. * DragHandler with target: null no longer crashes. * [QTBUG-64852] DragHandler enforces its axis constraints even when the parent coordinate system changes during the drag. For example the knob of a DragHandler-based slider inside a Flickable doesn't come out of its "groove" if you manage to drag the slider and the Flickable at the same time. - Loader: * [QTBUG-63729] Avoid evaluating bindings during destruction, to avoid some spurious errors. * [QTBUG-66822] When deactivating a loader, do not immediately clear its context. - Software renderer * [QTBUG-63185][QTBUG-65975] QSGLayer::grab now works correctly. * [QTBUG-66381] Fixed a crash when a Window has a QObject parent (such as Loader). * [QTBUG-65934] Fixed renering of rounded rectangles with floating point pixel device ratios. - Platform Specific Changes: * [QTBUG-67460] Fixed a problem with jumping back to the highlight while slowly scrolling a ListView on macOS. QtQuickTest ----------- - [QTBUG-50064] Added QUICK_TEST_MAIN_WITH_SETUP macro to allow executing C++ before a QML test (such as registering context properties). QQuickWidget ------------ - [QTBUG-45641] Tab presses are now passed on to the root item to be handled first. When not handled by the root item, it will be handled like a standard QWidget.