Qt 5.10 introduces many new features and improvements as well as bugfixes over the 5.9.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.10 series is binary compatible with the 5.9.x series. Applications compiled for 5.9 will continue to run with 5.10. 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. **************************************************************************** * General * **************************************************************************** - Added the QtQuick.Shapes plugin providing the Shape and ShapePath types for rendering geometry-based stroked and filled paths. Various types of Path existed already for defining movement trajectories in PathView, but now they can be rendered too. * PathLine, PathQuad, PathCubic, PathArc, PathCurve, and PathSvg * Fill: solid color, linear, radial or conical gradients * Stroke: colored and dashed lines * Uses GL_NV_path_rendering on recent nVidia GPUs - Added the Qt.labs.handlers plugin, providing a Tech Preview version of Pointer Handlers. These are intended as an improved way of handling gestures and events from pointing devices (mouse, touchpad, and touchscreen so far; stylus devices are coming in a future release). Properties acceptedButtons, acceptedModifiers, acceptedDevices, and acceptedPointerTypes enable scoping their reaction for specific use cases, but by default, they work equally well with mouse (as applicable) and touch devices. So far we have four of them available in QML: * TapHandler is for detecting clicks and taps, double-clicks, multi-clicks and taps, and long presses. * DragHandler provides a way of declaring an Item draggable, and also has properties which can be used for bindings to achieve less-mainstream use cases. * PinchHandler can react to a pinch gesture using two or more fingers (as configured via properties) or to a native pinch gesture from the OS. Declaring an instance inside an Item is enough to support pinching to scale, rotate and move that Item; and it also has properties available for bindings to enable other use cases. * PointHandler does not directly manipulate an Item, but just provides information about individual touchpoints or the mouse, for binding purposes. It is intended mainly for interactive feedback, orthogonal to whichever Handler or Item currently has the exclusive grab. Along with this, control over grabbing has gotten more fine-grained: the grabPermissions property in a Pointer Handler sets rules for how Pointer Handlers and Items negotiate for the exclusive grab; and some Pointer Handlers are able to handle some kinds of interaction with a new type of grab, the passive grab. There are several new logging categories you can enable to see how event delivery is done, the grab transitions, and so on. As usual with Tech Preview material, we reserve the right to change it substantially in future releases. **************************************************************************** * Library * **************************************************************************** QmlTest ------- - The returned object from TestCase::grabImage now has 'width', 'height', and 'size' properties for additional verification. In addition, there is a save() method to be able to persist the grabbed image to disk (for diagnostics purposes, for example). Qt Quick -------- - [QTBUG-58945] Added the properties ShaderEffectSource.samples and Item.layer.samples to allow requesting MSAA rendering of an item subtree, without enabling multisampling for the entire scene. - [QTBUG-59462] Added support for samplerExternalOES sampler type in ShaderEffect - [QTBUG-60268] Added Qt.platform.pluginName property. - [QTBUG-60268] Selecting software as default renderer moved from build time to run time - Resizing is done by setSize() in a couple of places, such that the widthChanged() and heightChanged() are emitted after both properties are updated. - Flickable: * [QTBUG-38515] Added a boundsMovement property that allows disabling the default bounce effect and implementing custom edge effects. - Item Views: * [QTBUG-34576] ListView velocities remain correct during index-based programmatic scrolling - Important Behavior Change: * [QTCREATORBUG-15000] The implicitWidthChanged2 and implicitHeightChanged2 signals of QQuickImplicitSizeItem have been removed. Although these were undocumented and hence private API, any applications currently using them should use the public implicitWidthChanged and implicitHeightChanged signals. - Item: * Add QQuickItem::size() and document QQuickItem::setSize(). * When subclassing QQuickItem, you should call setAcceptTouchEvents(true) if you need the item to receive touch events. It will be required later on. * Added a ItemEnabledHasChanged value to the ItemChange enum. QQuickItem::itemChange(ItemEnabledHasChanged) gets called when the item's effective enabled state has changed. The new enabled state is stored in ItemChangeData::boolValue. - Window: * It is now possible to set the default render type of text-like elements globally via the QQuickWindow::setTextRenderType() function. If you were using the (undocumented) QT_QUICK_DEFAULT_TEXT_RENDER_TYPE macro when building Qt Quick for the same purpose, note that the macro value needs now to be set to the "NativeTextRendering" value, instead of "NativeRendering". - Screen: * Added manufacturer, model and serial number. - TextEdit: * Added tabStopDistance property - Text: * [QTBUG-56728] Added "advance" property to Text element. * [QTBUG-56728] Added "font.preferShaping" property to Text, TextEdit and TextInput. This makes it possible to improve performance at the expense of some cosmetic font features. * [QTBUG-56728] Added "kerning" property to the font type to support disabling kerning on text. * [QTBUG-61984] Fixed an issue when the family of an application font was hardcoded and applied to text before the font itself was loaded. - Image: * [QTBUG-59872][QTBUG-29451] Allow direct loading of pkm texture files into Image. For example: Image { source: "myImage.pkm" } - QtTest: * [QTBUG-53381] Added keySequence() function in TestCase. QtQml ----- - [QTBUG-58493] "const" variable declarations are now available in JS as well as QML mode. - [QTBUG-58493] "const" variable declarations now require an initializer, bringing them closer to the required spec behavior. - [QTBUG-58493] "const" variable declarations now throw a SyntaxError if multiple attempts to declare the same variable name are found. Note that "const" is still not fully spec-compliant (i.e. reassignment at runtime is not disallowed). - Object.assign from the ES6 specification is now implemented. - Number now contains the MAX_SAFE_INTEGER, MIN_SAFE_INTEGER, isInteger and isSafeInteger properties from the ES6 specification. - [QTBUG-24799] The instanceof keyword in JavaScript has been extended to work on QML types and instances. This means that you are now able to use it to verify that a var is indeed the type you expect (e.g. someVar instanceof Rectangle). - [QTBUG-54961] Support C++11 scoped enums in QML. These can now be accessed as .. - The QML engine can now emit informational messages (in the "qt.qml.binding.removal" logging category) whenever a binding is lost due to an imperative assignment. This can be used to debug issues due to broken bindings. - [QTBUG-61599] Allow sending binary data, encoded as ArrayBuffer objects, via XMLHttpRequest's send() method. - [QTBUG-14861] Enums can now be declared directly in QML. - [QTBUG-63464] Fix Number.isNaN() returning incorrect values with some glibc versions. - [QTBUG-52515] Qt.platform.os returns "qnx" when running on QNX platforms. - [QTBUG-60133] std::vector and QVector are now on par with QList as a Q_INVOKABLE return type and as a property type - QQmlEngine: * [QTBUG-15602] Added retranslate() slot and QEvent::LanguageChange support to refresh bindings when changing the language at runtime. qmlscene -------- - Added --core-profile option to request that type of OpenGL context - Added --apptype option to set the application class (like the qml runtime tool already had)