373 lines
17 KiB
Plaintext
373 lines
17 KiB
Plaintext
Qt 5.14 introduces many new features and improvements as well as bugfixes
|
|
over the 5.13.x series. For more details, refer to the online documentation
|
|
included in this distribution. The documentation is also available online:
|
|
|
|
https://doc.qt.io/qt-5/index.html
|
|
|
|
The Qt version 5.14 series is binary compatible with the 5.13.x series.
|
|
Applications compiled for 5.13 will continue to run with 5.14.
|
|
|
|
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.
|
|
|
|
****************************************************************************
|
|
* QtQml *
|
|
****************************************************************************
|
|
|
|
- On Android, QML plugins are loaded directly from the APK libs dir and
|
|
use qrc:/android_rcc_bundle/qml to search for QML files.
|
|
|
|
- [QTBUG-38913] Added ability to import static qml plugins with CMake
|
|
builds using the new QT5_IMPORT_QML_PLUGINS function.
|
|
|
|
- The NaN obtained by Math.pow(+/-1, +/-infinity) and
|
|
(+/-1)**(+/-infinity) is now quiet rather than signalling.
|
|
|
|
- It is now possible to specify types for method parameters and their
|
|
return value in QML (basic and object types), using TypeScript-like
|
|
syntax with a colon separator. The syntax for QML declared signals
|
|
supports the same style.
|
|
|
|
- QML Binding elements now support restoring previous values
|
|
of the bound property when the binding is disabled. This will be the
|
|
default behavior in Qt 6.0. Reliance on the old behavior of only
|
|
restoring binding, not literal values will results in a warning beginning
|
|
with Qt 5.15.
|
|
|
|
- The regular expression engine was updated, causing somewhat better
|
|
compliance with the ECMAScript specification.
|
|
|
|
- [QTBUG-74190] Fixed a crash due to combination of aggressive GC with logging.
|
|
Also, the qt.qml.gc.* logging rules don't produce false warnings about huge
|
|
amounts of lost memory anymore.
|
|
|
|
- [QTBUG-75007] Usage of singletons from QML engines in different threads
|
|
does not cause race conditions anymore.
|
|
|
|
- The JIT compiler is now a configurable feature. You can pass
|
|
-no-feature-qml-jit to configure in order to skip it, or -feature-qml-jit
|
|
in order to build it for platforms where it's disabled by default, e.g.
|
|
iOS and tvOS.
|
|
|
|
- [QTBUG-49080][QTBUG-78955] You can now interrupt a QJSEngine running a
|
|
JavaScript program by setting its isInterrupted flag from a different thread.
|
|
|
|
- qmlscene will not run into an infinite loop anymore if you pass a QML
|
|
document without any executable code.
|
|
|
|
- You can configure the maximum sizes of the JavaScript and the garbage
|
|
collector stacks now, using the QV4_JS_MAX_STACK_SIZE and
|
|
QV4_GC_MAX_STACK_SIZE environment variables.
|
|
|
|
- [QTBUG-76346] Context properties carrying QObjects are automatically
|
|
reset when the objects are destroyed now.
|
|
|
|
- [QTBUG-40487] You can now use Component properties in Binding elements.
|
|
|
|
- [QTBUG-76932] Changing sourceComponent in a Loader does not delete
|
|
C++-owned objects anymore.
|
|
|
|
- qmllint can now check for unqualified access to to properties of the
|
|
root object and undeclared signal parameters.
|
|
|
|
- [QTBUG-77096] You can use generator functions in QML components now.
|
|
|
|
- You can and should use plain JavaScript functions as signal handlers in
|
|
Connections elements now. This avoids the overhead of the custom parser
|
|
that otherwise needs to run for each Connections element, and forces you
|
|
to specify the signal parameters you are going to use.
|
|
|
|
- You can pass a set of initial properties to QQmlApplicationEngine,
|
|
QQmlComponent, and QQuickView now. Those will be used as defaults in any
|
|
subsequent instantiation of top-level QML objects.
|
|
|
|
- Anonymous types should be registered via the new qmlRegisterAnonymousType()
|
|
function now, rather than via the parameter-less qmlRegisterType(). That
|
|
is, you should specify a URI and a major version for your type.
|
|
|
|
- [QTBUG-74087] The QML parser can parse more complex JavaScript code now
|
|
without overflowing the stack. This allows for deeper list nesting in QML.
|
|
|
|
- [QTBUG-76021] instanceof does not confuse derived types with no additional
|
|
properties with their parent types anymore.
|
|
|
|
- [QTBUG-78943] Binding elements will not randomly convert strings to other
|
|
types anymore.
|
|
|
|
- [QTBUG-48150] You can use aliases of "depth" 2 now. That is, something like
|
|
"property alias topMargin: myItem.anchors.topMargin" works now.
|
|
|
|
- [QTBUG-78325] The "color" type has a property "valid" now.
|
|
|
|
- [QTBUG-78044] The qmlprofiler command line tool's interactive mode is more
|
|
stable now.
|
|
|
|
- [QTBUG-48809] Fixed a warning about non-relative paths in qmldir files.
|
|
We now permit the use of resource urls in qmldir files to allow a plugin
|
|
to include its .qml files in resources, optionally compiled ahead of time.
|
|
|
|
- [QTBUG-79614] QQmlProperty now handles reads of QQmlPropertyMap correctly.
|
|
|
|
- [QTBUG-79443] In the debugger, we now avoid loading cache files, so that
|
|
JavaScript breakpoints keep working after the first run.
|
|
|
|
- [QTBUG-55259] qmlimportscanner now scans resources in qrc files.
|
|
|
|
- [QTBUG-78486] Calling a function with 14 arguments no longer crashes.
|
|
|
|
- [QTBUG-78721] Fixed handling of properties with interface type in bindings.
|
|
|
|
- [QTBUG-71078] Increased the QML loader thread's stack size to avoid problems
|
|
parsing deeply nested QML/JS files on some platforms.
|
|
|
|
- [QTBUG-72442] Fixed float value binding to an integer (including NaN values).
|
|
|
|
- [QTBUG-78566] A warning is emitted when overriding a declared Binding from
|
|
elsewhere. The Binding stays active and updates the target property again
|
|
on the next change.
|
|
|
|
- [QTBUG-77027] Fixed nullptr handling in Binding.
|
|
|
|
- [QTBUG-78859] Fixed a property cache memory leak.
|
|
|
|
- [QTBUG-78865] Fixed a memory leak due to declaring unused scripts in
|
|
qmldir files.
|
|
|
|
- [QTBUG-78706] Fixed inconsistent daylight saving time behavior by
|
|
converting QTime to V4 Date on a date with no DST in force.
|
|
|
|
- [QTBUG-78098] QQmlTypeLoader now prevents more trivial cycles.
|
|
|
|
- [QTBUG-77751] Fixed the translation context in Qt.include()d JS files.
|
|
|
|
- [QTBUG-76514] Avoid duplicate singleton creation.
|
|
|
|
- [QTBUG-77237] Using an enum in a switch statement performs much better.
|
|
|
|
- [QTBUG-76866] Fixed a crash due to inconsistency between
|
|
isValueType() and valueType()'s return value.
|
|
|
|
- [QTBUG-77954] Semicolon is always allowed after property declaration.
|
|
|
|
- [QTBUG-73512] Fixed a bug with use of resource paths in
|
|
QQmlEngine::setImportPathList().
|
|
|
|
- [QTBUG-76303] When converting from number to string, we now keep
|
|
double precision if the number of significant digits exceeds six, so that
|
|
precision isn't lost if the string is converted back to a number.
|
|
|
|
- [QTBUG-76838] Binding.when is stored as boolean to support primitive values.
|
|
|
|
- [QTBUG-76033] Fixed several bugs in frozen(), sealed(), nonExtensible()
|
|
and propertiesFrozen().
|
|
|
|
- [QTBUG-75983] Fixed a crash in XMLHttpRequest::open().
|
|
|
|
- [QTBUG-49975] Warn rather than crashing in case of invalid top-level
|
|
parallel states.
|
|
|
|
- [QTBUG-73786] We now filter out duplicate entries in Object.keys().
|
|
|
|
- [QTBUG-73491] Added QQmlInstanceModel::variantValue() to enable ComboBox.valueRole.
|
|
|
|
- [QTBUG-74348] Fixed memory leaks due to value type provider deletion order.
|
|
|
|
- There are two new functions to register singleton types and help you to
|
|
get rid of context properties:
|
|
* qmlRegisterSingletonType() has an overload taking a std::function now,
|
|
instead of a bare function pointer. Therefore, you can capture context
|
|
now when creating singletons.
|
|
* qmlRegisterSingletonInstance() directly passes a single instance of the
|
|
type to be used in all QML engines. No QML engine assumes ownership of
|
|
such a singleton and any concurrent access has to be handled by the
|
|
object itself.
|
|
|
|
- qml Runtime tool:
|
|
* [QTBUG-53557] The QML Runtime tool now accepts command-line arguments
|
|
in double-dash GNU style as well as the old single-dash style.
|
|
* [QTBUG-53557] The QML Runtime tool now has default behavior matching
|
|
qmlscene when the root QML object is an Item: it will be wrapped in a
|
|
Window which will resize the Item when the Window is resized. But you
|
|
can alternatively use the --config resizeToItem option, resulting in
|
|
the same behavior as qmlscene --resizeToRoot: resizing the root Item
|
|
programmatically causes the wrapping Window to be resized. Behavior
|
|
can still be customized in other ways using the --config option with
|
|
an external QML configuration file.
|
|
* The QML Runtime tool --quiet option now disables categorized logging
|
|
in addition to qDebug, qInfo, qWarning and qFatal, except for some
|
|
early QPA-level categorized logging that occurs during application
|
|
construction. You can still override specific categories by setting
|
|
QT_LOGGING_CONF or QT_LOGGING_RULES.
|
|
* [QTBUG-78828] Fixed a crash at exit when the qmldebugger channel is
|
|
connected.
|
|
|
|
- qmlplugindump:
|
|
* [QTBUG-78745] If given a "--strict" argument, qmlplugindump will check
|
|
the URI as exact match; whereas by default it will ignore the given
|
|
major version, as before.
|
|
* [QTBUG-78744] qmlplugindump no longer ignores base classes of QML files
|
|
registered as components.
|
|
|
|
- Important Behavior Changes:
|
|
* QRegularExpression is now supported the same way QRegExp was in QML.
|
|
QJSValue::toVariant() creates a QRegularExpression variant rather than
|
|
a QRegExp one from a JavaScript regular expression now.
|
|
* The accidentally exported function qmlRegisterBaseTypes() was removed.
|
|
* QJSEngine::toScriptValue will now return correct JavaScript objects in
|
|
more cases, for example, for gadget types like QPointF.
|
|
* QJSEngine::toScriptValue now uses the same behavior as the rest of the
|
|
engine when building JavaScript values, which will cause the types of
|
|
some returned JavaScript objects to change. For instance, string lists
|
|
are now returned as sequence objects, not array objects, and QChar now
|
|
constructs a JavaScript string.
|
|
* [QTBUG-75176] Attached properties are internally not identified by
|
|
integer IDs anymore, but rather by the functions used to produce them.
|
|
Using the integer indexes is a bad idea because the same metatype can
|
|
be registered as several different QML types and the integer IDs refer
|
|
to the QML types. Therefore, qmlAttachedPropertiesObjectById() and the
|
|
overload of qmlAttachedPropertiesObject() taking an integer ID are
|
|
deprecated.
|
|
* We expect QMetaObject revisions and import minor versions to be equal.
|
|
That is, when registering a revision X of a metaobject as QML type for
|
|
a version Y.Z of your module, X should equal Z. This is not enforced,
|
|
yet, but future versions of Qt will build on this assumption.
|
|
|
|
****************************************************************************
|
|
* QtQuick *
|
|
****************************************************************************
|
|
|
|
- Qt Quick is now able to render via Vulkan, Metal, and Direct 3D 11. The
|
|
new rendering path is currently a preview feature and has to be opted-in
|
|
to explicitly.
|
|
|
|
- Drag and Drop:
|
|
* [QTBUG-30305] When DropAreas intersect, the higher z-order item now
|
|
steals the drop.
|
|
* [QTBUG-72045] Fixed a crash when using an image provider url with Drag.
|
|
|
|
- DelegateModel:
|
|
* [QTBUG-63477] DelegateModel.delegate is now a notifying property,
|
|
and an Item View with model: DelegateModel { } is now refilled when
|
|
the delegate is changed.
|
|
|
|
- Event Handlers:
|
|
* Added WheelHandler, which handles mouse wheel rotation by modifying
|
|
arbitrary Item properties.
|
|
* [QTBUG-75661] Added DragHandler.snapMode which can be used to configure
|
|
conditions under which the dragged item is snapped to the cursor. The
|
|
default mode is SnapAuto. The old behavior can be obtained through the
|
|
SnapIfPressedOutsideTarget mode.
|
|
|
|
- Image:
|
|
* [QTBUG-77506] Image and BorderImage now have currentFrame and
|
|
frameCount properties which can be used to step through the frames of
|
|
multi-page image formats such as TIFF, WEBP and ICO (and PDF in the
|
|
future).
|
|
* [QTBUG-55027] Any URL interceptor is applied to the source binding.
|
|
* [QTBUG-76527] ImageProvider is kept alive while in use.
|
|
|
|
- FolderListModel:
|
|
* update the values of some properties when setting new values to them
|
|
|
|
- Layouts:
|
|
* [QTBUG-67204] GridLayout now warns rather than asserting when an
|
|
invalid row or column is specified.
|
|
* [QTBUG-79359] GridLayout now emits appropriate signals for
|
|
layoutDirection, columnSpacing, and rowSpacing changes.
|
|
|
|
- ListModel:
|
|
* [QTBUG-63569] We now emit a warning if an object with an undefined or
|
|
null member is added.
|
|
* [QTBUG-79083] JSON.stringify(model.get(i)) now works correctly when the
|
|
row contains a nested list model.
|
|
|
|
- Loader:
|
|
* [QTBUG-79435] Loader now clears all initial properties when changing source.
|
|
|
|
- MouseArea:
|
|
* [QTBUG-75993] mouseX and mouseY will now be synchronized after dragging
|
|
the target item.
|
|
* [QTBUG-77983] The containsMouse property will not become true when an
|
|
invisible mousearea become visible, if the enabled property is false or
|
|
its parent item is not enabled.
|
|
|
|
- MultiPointTouchArea:
|
|
* [QTBUG-77142] When a stationary touchpoint contains some "interesting"
|
|
property change (pressure or velocity, so far), it is delivered normally,
|
|
and MultiPointTouchArea will react to that.
|
|
|
|
- Particles:
|
|
* [QTBUG-54673] Fixed image particle flickering due to dynamic creation
|
|
of Emitter objects.
|
|
|
|
- Path and Shapes:
|
|
* Added Path.scale property to scale a path prior to rendering via
|
|
Shape or to scale the movement in PathView. The width and height
|
|
can be different, to achieve anisotropic scaling.
|
|
* Added PathPolyline, to render an array, list or vector of QPointF,
|
|
or a single QPolygonF.
|
|
* Added PathMultiLine, to render an array, list or vector of
|
|
polylines or QPolygonF.
|
|
* Exposed QQuickPath::pointAtPercent as invokable in QML.
|
|
* [QTBUG-77332] Fixed incorrect colors when shapes change scene.
|
|
|
|
- PathView:
|
|
* [QTBUG-77173] When the mouse is pressed while PathView is already moving,
|
|
PathView now grabs rather than allowing the delegate to handle it. The
|
|
position will then snap to the nearest delegate on release, as usual.
|
|
* [QTBUG-77173] If the user drags quickly, pauses, and then releases,
|
|
the calculated velocity is reduced according to a linear decay model
|
|
up to 50ms (and zero after that), to prevent excessive movement when
|
|
the user intended the pause to stop the movement.
|
|
|
|
- TableView:
|
|
* [QTBUG-79395] forceLayout() now rebuilds the table if the size of the
|
|
model has changed, to avoid a crash.
|
|
|
|
- Text:
|
|
* Markdown (GitHub dialect by default) is now a supported format, when
|
|
textFormat: Text.MarkdownText is declared. All features such as
|
|
hyperlinks, images, tables, lists, checklists, etc. are supported.
|
|
|
|
- TextEdit:
|
|
* Markdown (GitHub dialect by default) is now a supported format, when
|
|
textFormat: TextEdit.MarkdownText is declared. If it contains checkboxes,
|
|
the user can click on them to toggle the states.
|
|
* [QTBUG-14769][QTBUG-50482] The mouse cursor is now IBeamCursor by default,
|
|
or PointingHandCursor when the mouse is hovering over a checkbox or a
|
|
hyperlink. However this can be overridden in C++.
|
|
* [QTBUG-74745] Fixed overlapping text after line deletion.
|
|
|
|
- TextInput:
|
|
* [QTBUG-77814] Fixed text selection logic after insert() and remove().
|
|
|
|
- [QTBUG-79573] Fixed application deadlock when an item is reparented
|
|
to contentItem in a user-defined windowChanged handler, e.g. on exit.
|
|
|
|
- [QTBUG-78304] A ShortCutOverride event is now sent even when receiving a
|
|
non-spontaneous key press (e.g. from sendEvent()), so that Shortcut reacts.
|
|
|
|
- [QTBUG-76749] Fixed a crash when using an animation while destroying an item.
|
|
|
|
****************************************************************************
|
|
* Qt Labs Animation *
|
|
****************************************************************************
|
|
|
|
- Added the BoundaryRule QML type, a PropertyValueInterceptor that
|
|
restricts the range of values a numeric property can have, applies
|
|
"resistance" when the value is overshooting, and provides the ability to
|
|
animate it back within range. This is especially useful in combination
|
|
with WheelHandler to limit its range of motion or adjustment.
|
|
|
|
****************************************************************************
|
|
* Qt Labs QML Models *
|
|
****************************************************************************
|
|
|
|
- Added the TableModel QML type, a JavaScript-based model for the new
|
|
TableView.
|