284 lines
13 KiB
Plaintext
284 lines
13 KiB
Plaintext
Qt 5.15 introduces many new features and improvements as well as bugfixes
|
|
over the 5.14.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.15 series is binary compatible with the 5.14.x series.
|
|
Applications compiled for 5.14 will continue to run with 5.15.
|
|
|
|
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 *
|
|
****************************************************************************
|
|
|
|
- [QTBUG-74137] CMake: Added a Qt6 forward compatible CMake API. Using this,
|
|
you can define projects that work with either Qt5 or Qt6, without further
|
|
changes.
|
|
|
|
- [QTBUG-79331] If you register the same revision of the same type multiple
|
|
times, the last registration is the one QML will use. This allows you to
|
|
override qmlRegisterSingleton*() calls, for example in order to register a
|
|
singleton instance for a type tagged with QML_SINGLETON. Previously, the
|
|
first registration would take effect.
|
|
|
|
- [QTBUG-79868] Using instanceof to check whether an instance has the type of
|
|
QObject or one of its derived classes used to raise a TypeError, if the
|
|
instance was not derived from QObject. Now, it instead returns false, which
|
|
is more in line with the ECMAScript semantic.
|
|
|
|
- The QML ObjectModel type had an undocumented "feature" which made it sort
|
|
items in list views into sections according to context properties of the QML
|
|
context the created objects belong to. Instead of context properties, object
|
|
properties are used now.
|
|
|
|
- [QTBUG-73669] Using the Qt Quick Compiler would exclude the original .qml
|
|
files from the resource system. This made it impossible to change the Qt
|
|
library binary later as the program binary was tied the to the exact Qt
|
|
version. In addition sometimes unrelated files (QTBUG-73669) were removed.
|
|
For the latter scenario, retain and skip options were added for the Qt
|
|
Quick Compiler. In Qt 5.15 the Qt Quick Compiler does not remove the input
|
|
files anymore. All files are retained and the compiler merely adds the
|
|
more efficient binary representation to the application.
|
|
|
|
****************************************************************************
|
|
* Deprecation Notice *
|
|
****************************************************************************
|
|
|
|
- The qmlmin tool is deprecated and not needed anymore. The built-in caching of
|
|
qml files addresses the needs and unfortunately the tool does not work with
|
|
more advanced concepts such as required properties or the ES 7 yield
|
|
statement. It will be removed in Qt 6.
|
|
|
|
- qmlRegisterExtendedType() without URI or version, is deprecated. You should
|
|
state the module the type belongs to, by supplying a URI and version.
|
|
|
|
- qmlRegisterInterface(const char *typeName) without URI or version, is
|
|
deprecated. You should state the module the type belongs to, but supplying a
|
|
URI and version. Conversely, the typeName is redundant as the type itself
|
|
is already supplied as template parameter. None of the other registration
|
|
functions allow overriding the name for the metatype registration.
|
|
|
|
- QQmlIncubationController::incubateWhile(volatile bool *flag, int msecs) is
|
|
deprecated. The volatile parameter is used as a poor man's atomic bool, with
|
|
all the well known downsides of such a practice. A replacement method
|
|
taking an actual atomic is provided.
|
|
|
|
- In QML Connections elements, the handlers should be defined as plain
|
|
JavaScript functions, not as "onPropertyChanged properties".
|
|
|
|
- You can currently access local files from QML via XMLHttpRequest using
|
|
"file://..." URLs. This will not be allowed by default anymore in Qt6. If
|
|
you actually need this behavior, you can set the environment variables
|
|
QML_XHR_ALLOW_FILE_READ and/or QML_XHR_ALLOW_FILE_WRITE to 1. You can also
|
|
set them to 0 when using Qt 5.15 to prevent local file access.
|
|
|
|
- [QTBUG-78596] The class QSGEngine is now deprecated.
|
|
|
|
****************************************************************************
|
|
* QtQml *
|
|
****************************************************************************
|
|
|
|
- QML allows a new attribute "required" to be attached to properties. Such
|
|
properties have to be set when instantiating a component. The various models
|
|
and views use this as the preferred way of communicating model data to
|
|
delegates. The old way of passing model data via context properties should
|
|
be avoided in new code.
|
|
|
|
- The qmllint tool has been extended to check for patterns considered to be
|
|
potentially problematic in Qt6, and suggest better solutions. Pass the -U
|
|
command line option to enable the checks.
|
|
|
|
- The new qmlformat tool can be used to pretty-print a QML file according to
|
|
the recommended code style.
|
|
|
|
- QML supports type assertions similar to typescript. So far this is only used
|
|
to make the intended type of an expression known to qmllint. At run time,
|
|
type assertions are ignored.
|
|
|
|
- C++ types can and should be registered to QML at compile time now. For this
|
|
purpose there are a number of macros available in qqml.h that can be added
|
|
to a class declaration. A new tool, qmltyperegistrar, will evaluate them and
|
|
generate the actual registrations. You should not need to call any
|
|
qmlRegister* function manually anymore in new code.
|
|
|
|
- New classes QQmlEngineExtensionInterface and QQmlEngineExtensionPlugin are
|
|
available and should be used in place of QQmlExtensionInterface and
|
|
QQmlExtensionPlugin. The new classes do not offer a virtual registerTypes()
|
|
method as types should be registered at compile time.
|
|
|
|
- [QTBUG-81631] Qt.formatDateTime, Qt.formatDate and Qt.formatTime now support
|
|
formatting according to a locale and an optional locale format type. If
|
|
locale dependent formatting is desired, this method should be used instead
|
|
of the locale-related DateFormat enum members.
|
|
|
|
- [QTBUG-77926] Nullish coalescing is now implemented as specified in
|
|
https://github.com/tc39/proposal-nullish-coalescing.
|
|
|
|
- It is now possible to declare new QML components in a QML file via the
|
|
component keyword. They can be used just as if they were declared in another
|
|
file, with the only difference that the type name needs to be prefixed with
|
|
the name of the containing type outside of the file were the inline
|
|
component has been declared.
|
|
|
|
- The Qt.uiLanguage and QJSEngine::uiLanguage properties were added. They can
|
|
be used to dynamically change the translation language from both QML and C++.
|
|
QQmlApplicationEngine does this automatically. When using other engines, you
|
|
need to listen for changes of QJSEngine::uiLanguage and load the respective
|
|
translator in response.
|
|
|
|
- [QTBUG-82743] Assigning to a QSet property from JS works again.
|
|
|
|
- [QTBUG-74087] There is now an option to disable the (necessarily)
|
|
conservative stack size checks when parsing and executing JavaScript. If the
|
|
environment variable QV4_CRASH_ON_STACKOVERFLOW is set, JavaScript stack
|
|
overflows crash the program the same way C++ stack overflows do. On the flip
|
|
side, more stack space is made available that way.
|
|
|
|
- [QTBUG-81714] You can add annotations, prefixed by "@" to QML elements now,
|
|
similar to Java type annotations. These annotations have to be written in QML
|
|
and are ignored by the QML interpreter. Tools processing QML can evaluate
|
|
them.
|
|
|
|
- [QTBUG-82843] Fixed a crash caused by creating QQmlValueTypeWrapper from
|
|
an invalid Q_GADGET type.
|
|
|
|
- [QTBUG-82150] QML Debugger now shows correct values for color objects.
|
|
|
|
- [QTBUG-81970] QQmlCustomParser now resolves import namespaces.
|
|
|
|
- [QTBUG-81678] Fixed qml loading problems caused by cycles.
|
|
|
|
- [QTBUG-81825] Array.includes now works with value types such as point.
|
|
|
|
- [QTBUG-79263] QQmlListProperty now has replace and removeLast functions.
|
|
|
|
- [QTBUG-81123] Fixed a crash in QQmlListProperty if a contained object is deleted.
|
|
|
|
- [QTBUG-58858] The path for storing QML cache files can now be customized.
|
|
|
|
- [QTBUG-80030] Implemented TypedArray.from()
|
|
|
|
- [QTBUG-80413] WorkerScript now has a ready property.
|
|
|
|
- [QTBUG-75110] Locale NumberOptions are now exposed to QML.
|
|
|
|
- [QTBUG-41087] Primitive self-references in composite types are now supported.
|
|
|
|
- [QTBUG-76074] Custom QML types can now be freed when unloading plugins.
|
|
|
|
- [QTBUG-73669] Fixed link errors when enabling CONFIG+=qtquickcompiler
|
|
on non-QML projects.
|
|
|
|
- [QTBUG-60908] Removed an unnecessary assert when setting a binding to alias.
|
|
|
|
- qml: The QML Runtime tool --selector option now allows defining a custom
|
|
QQmlFileSelector.
|
|
|
|
****************************************************************************
|
|
* QtQuick *
|
|
****************************************************************************
|
|
|
|
- Animations:
|
|
* [QTBUG-48193] Fixed signal emission order for zero-duration animations.
|
|
|
|
- AnimatedSprite:
|
|
* [QTBUG-59090] Added finishBehavior to allow a sprite to finish on the
|
|
last frame.
|
|
|
|
- Behavior:
|
|
* [QTBUG-70964] Behavior now has a targetProperty property to allow custom
|
|
logic based on the target property's object or name.
|
|
|
|
- Event handlers:
|
|
* [QTBUG-68073] Pointer Handlers now have a cursorShape property to set the
|
|
cursor when the handler is active and the mouse or a tablet stylus is hovering,
|
|
and restore to the previous cursor when the pointing device leaves.
|
|
* [QTBUG-79660] QTabletEvents are now delivered to pointer handlers.
|
|
For example PointHandler { acceptedPointerTypes: PointerDevice.Pen }
|
|
is one way of receiving stroke information for drawing via Canvas or Shapes,
|
|
and HoverHandler can use the new cursorShape property to show when a
|
|
stylus is in use.
|
|
* [QTBUG-68075] Pointer Handlers now have a dragThreshold property to
|
|
define the distance at which DragHandler will activate and TapHandler
|
|
will deactiveate, for example.
|
|
|
|
- FolderListModel:
|
|
* [QTBUG-82298] The fileUrl property was added to replace the fileURL
|
|
property, which is now deprecated.
|
|
|
|
- Image:
|
|
* Image now has a sourceClipRect property to render a clipped image from a
|
|
region of the sourceSize.
|
|
* [QTBUG-80616] Image now has a colorSpace property.
|
|
|
|
- Item:
|
|
* Item.mapToItem() and mapFromItem() now work with QPointF and QRectF types
|
|
as well as with raw numbers.
|
|
* Item.mapToGlobal() and mapFromGlobal() now work with QPointF as well as
|
|
with raw numeric coordinates.
|
|
|
|
- Item Views:
|
|
* [QTBUG-81580] DelegateChooser now supports using a property name as
|
|
roleValue when an array of QObject instances is used as the model for a
|
|
* [QTBUG-74046] ListView no longer allows the user to press on an Overlay or
|
|
PullBack header or footer and start scrolling, but only on the content
|
|
delegates.
|
|
* [QTBUG-80507] ListView now has support for reusing delegate items. This can
|
|
be switched on by setting the reuseItems property of ListView to true.
|
|
|
|
- MouseArea:
|
|
* [QTBUG-74987] MouseArea no longer gets stuck in pressed state if it
|
|
is set invisible on press.
|
|
|
|
- MultiPointTouchArea:
|
|
* [QTBUG-81944] The TouchPoint.x and y properties are updated together
|
|
before the change signals are emitted.
|
|
|
|
- Particles:
|
|
* [QTBUG-76827] QQuickItemParticle::give() is now implemented.
|
|
|
|
- RHI / scene graph:
|
|
* [QTBUG-82927] QSGRenderNode is now usable in Quick3D.
|
|
* [QTBUG-78570] Added API to get the platform specific texture handle.
|
|
* [QTBUG-80690] Fixed invalid core profile shader code.
|
|
* [QTBUG-80498] We now avoid unnecessary rendering of an extra frame with QSG_RHI=1
|
|
* [QTBUG-80365] Initialization failure now results in a sensible error dialog
|
|
rather than an infinite loop.
|
|
* [QTBUG-82988] QSGSimpleMaterial and QSGSimpleMaterialShader are now
|
|
deprecated.
|
|
|
|
- Shapes:
|
|
* Added PathText path element which can be used together with Qt Quick Shapes
|
|
to get text rendering that does not cache glyphs in a texture, but
|
|
triangulates the outlines of the glyphs instead.
|
|
|
|
- Text:
|
|
* [QTBUG-78277] Added new API that exposes implicitWidth, and isLast on the
|
|
QQuickTextLine for use in the lineLaidOut signal. This allows the user to
|
|
layout other items relative to the lines of text.
|
|
* [QTBUG-80759] Reduced redundant renderering of glyphs, thus fixing incorrect
|
|
rendering of superscripts.
|
|
|
|
- TextInput:
|
|
* [QTBUG-76320] Inputmask X character now requires non-blank input.
|
|
|
|
- QQuickItem:
|
|
* [QTBUG-68176] ParentChange now avoids roundoff error when restoring the old position.
|
|
|
|
- QQuickWidget:
|
|
* [QTBUG-78323] When QQuickWidget is resized, an in-scene dialog or other
|
|
content that is rendered into an offscreen window is now resized correctly.
|
|
|
|
- QQuickWindow:
|
|
* [QTBUG-78141] LanguageChange events are now delivered to items to enable
|
|
them to update translations.
|
|
* [QTBUG-79268] createTextureFromId() is now deprecated.
|