blob: e98bc8e4d9b645ca278a811e9dfa542d47f0cf41 [file] [log] [blame]
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 <TypeName>.<EnumName>.<EnumValue>
- 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)