blob: 3dd12a209c2cced039f64bb125419527774280bc [file] [log] [blame]
/****************************************************************************
**
** Copyright (C) 2018 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/
/*!
\page whatsnew512.html
\title What's New in Qt 5.12
\brief Lists the new features in Qt 5.12.
\section1 New Features in Qt 5.12
\section2 Qt Core Module
\list
\li Added the static \l {QCryptographicHash::hashLength} method. It
returns the length of a hash's output.
\li Added wildcardToRegularExpression helper method to
QRegularExpression for easier wildcard implementation in user code.
\li Added anchoredPattern helper method to QRegularExpression for
easier exact matching implementation in user code.
\li Added QRegularExpression support to QSortFilterProxyModel.
\li Support for CBOR data similar to existing JSON support.
\endlist
\section2 Qt Network Module
\list
\li Added DTLS (Datagram Transport Layer Security) over UDP support.
\li Added renegotiation to Security Transport backend.
\li Added ALPN support and HTTP/2 protocol negotiation to Security
Transport backend.
\li Added PKCS#8 support in the generic SSL backend (WinRT and Secure
Transport).
\li Added QPasswordDigestor: a new namespace that contains
password-based key derivation functions (currently PBKDF1 and
PBKDF2).
\endlist
\section2 Qt Widgets Module
\list
\li Added \l {QStyle::SH_SpinBox_StepModifier} style hint.
\li Added \l {QLineEdit::inputRejected} signal.
\li Added \l {Qt::WA_StyleSheetTarget} attribute.
\li Added \l {QLayout::indexOf(QLayoutItem *)} function.
\endlist
\section2 Qt QML Module
\list
\li The JavaScript engine now supports
\l {http://www.ecma-international.org/ecma-262/7.0/}{ECMAScript 7}.
This includes an upgrade to ECMAScript 6, see
\l {http://es6-features.org/}{ECMAScript 6 - New Features: Overview
& Comparison}.
\li ECMAScript modules can now be loaded directly with
QJSEngine::importModule() and imported in .qml files when using the
.mjs file extension.
\endlist
\section2 Qt Quick Module
\list
\li Pointer Handlers are renamed to Input Handlers (we include the
pre-existing Keys attached property in this category) and are now
fully supported as a first-class QML feature in Qt Quick.
(C++ API for them is still not public yet.)
\li HoverHandler is a new type of handler for detecting mouse hover. It
can detect hover even in cases of deep nesting: unlike MouseArea,
you can hover multiple nested Items with HoverHandlers in them at
the same time. (For example, a sidebar and an individual button on
the sidebar).
\li DragHandler is now a multi-point handler: if you set
minimumPointCount to \c 2, it will react only to a 2-finger drag,
for example. This can give you another degree of freedom:
single-finger drag can perform the typical item movement, and
2-finger drag can do something else (change the tilt angle, for
example).
\li Added support for pregenerated distance field caches for faster
startup times.
\li Added TableView as another type of Item View: on par
with ListView but having multiple columns. Unlike the one in
QtQuick Controls 1.x, it does not do any styling; rather it
provides the optimal solution for instantiating (and pooling and
reusing) delegates on demand as you scroll through the rows and
columns.
\li Tech Preview: Added DelegateChooser as a means of choosing
different delegates in Item Views (such as TableView) depending on
role values from the model, or depending on the index.
\endlist
\section2 Qt Quick Controls 2 Module
\list
\li Dial: Added inputMode property, that adds two new ways of
interacting with the Dial: horizontally and vertically. These new
input modes use a relative input system that adds changes to the
dial's position to its value. This results in a dial that is less
"jumpy", making it safe for operations that could be harmful if
done incorrectly, like adjusting audio levels.
\li Control and Popup: Added topInset, bottomInset, leftInset, and
rightInset properties to control the geometry of the background,
similarly to how paddings control the geometry of the contentItem.
\li Added implicit*Width and implicit*Height properties (for example,
implicitHeaderWidth, implicitContentWidth, and so on) to simplify
complex implicit size bindings.
\li SwipeView and DialogButtonBox: Added contentWidth and contentHeight
properties.
\li RangeSlider:
\list
\li Added the valueAt() function, which enables tooltips to show
up-to-date values for each handle when live is set to \c false
(copied from Slider).
\li Added first.moved() and second.moved() signals, similar to
Slider's moved() signal.
\endlist
\li Control: Unless explicitly specified, baselineOffset is now
automatically updated based on the top padding of the control and
the baselineOffset of the contentItem. Styles no longer need to
specify the baselineOffset in QML.
\li Popup: added anchors.centerIn to allow a convenient way of
centering a popup.
\li QQuickStyle: Added stylePathList() and addStylePath() methods for
managing the list of directories where Qt Quick Controls 2 searches
for available styles.
\li Slider and RangeSlider: Added touchDragThreshold property for
configuring the threshold to initiate the touch 'drag' of the
handle of the slider. The mouse 'drag' is not affected by the
property.
\li TextArea and TextField: Added placeholderTextColor property to
customize the placeholderText color to fit the backgrounds.
\li Material: Added a Dense variant of the Material style for use on
desktop platforms. Some controls are slightly smaller in height and
use smaller font sizes. The variant can be enabled by setting
QT_QUICK_CONTROLS_MATERIAL_VARIANT to Dense or setting
\c {Variant=Dense} in the qtquickcontrols2.conf file.
\li DialogButtonBox: Added buttonLayout property that can be used to
arrange the buttons.
\li Tumbler: Added positionViewAtIndex() function that calls the
respective PathView/ListView function, depending on the value of
wrap. This allows changing currentIndex without animations.
\li Control and Popup: Added horizontalPadding and verticalPadding
properties as convenient ways to set both left and right, or top
and bottom paddings in one go.
\li ToolTip: Added non-attached show() and hide() methods to give the
same level of convenience for showing non-attached tooltips with
certain parameters.
\endlist
\section2 Qt 3D Module
\list
\li Load an animation from a file containing several animations, either
by name or index.
\li Enable stepped animation curves.
\li Fix for creation and re-parenting of QNodes in some circumstances.
\li Reflect loaded texture properties for frontend texture objects.
\li TextureImage no longer requires a texture as parent.
\li Reduce CPU usage when not in the simulation loop.
\li Enable EntityLoader to load from a Component or file.
\li Support rendering using OpenGL ES 3.1.
\li Performance and bug fixes in the renderer backend.
\endlist
\section2 macOS-Specific
\list
\li Added support for QSurfaceType::MetalSurface.
\li Added support for QSurfaceType::VulkanSurface and QVulkanWindow,
using MoltenVK.
\endlist
\section2 Qt Wayland Module
\list
\li Added support for xdg-shell stable (and deprecated unstable v5).
\li Made the default window decorations look nicer.
\li Added support for xdg-decoration-unstable-v1 for server-side window
decorations.
\endlist
\section2 Qt Websockets Module
\list
\li Added the \l {QWebSocket::bytesToWrite} function.
\endlist
\section2 Qt Location Module
\list
\li Updated MapboxGL plugin with QNX7 support.
\li Exposed add/remove transitions in MapItemView.
\li Updated MapItemView to inherit from MapItemGroup so that it can
nest itself. It can also be used as a delegate of itself.
\li Support populating the PlaceSearchModel incrementally, as opposed
to only switching pages.
\li Introduced Map.visibleArea, to restrict the visible area of the
map.
\li Updated the MapItem's geoShape property to be R/W, with a virtual
setter in the base class.
\li Added support for inner holes in QGeoPolygon. These are currently
honored, by MapPolygon, only with the MapboxGL plugin. Support in
the built-in renderer will follow.
\li Added support for Route legs.
\endlist
\section2 Qt Test Module
\list
\li Updated std::tuple errors to provide better diagnostics when used
with QCompare.
\endlist
\section2 Qt Labs Platform
\list
\li Menu, MenuItem, SystemTrayIcon: deprecated iconName and iconSource
in favor of icon.name and icon.source grouped properties.
\li Menu, MenuItem, SystemTrayIcon: added icon.mask grouped property.
\endlist
\section2 Qt Virtual Keyboard Module
\list
\li Introduced an extension interface for the virtual keyboard. All the
current input methods and some special keyboard layouts (for
example, Hunspell, OpenWnn, and so on) have been moved to
extensions. The extension interface allows third parties to create
new input methods without having to modify or rebuild the virtual
keyboard. In addition, this change makes it possible to add
features and languages independently by copying the desired
extensions to the system.
\li Introduced a virtualkeyboard module, which can be linked against an
extension plugin. This module provides the C++ API necessary for
creating an input method.
\li Added option to exclude all styles from the plugin at build time.
\li Added support for MyScript Superimposed handwriting recognition.
MyScript supports the recognition of isolated character, cursive,
print and superimposed writing. In addition, it enables the
recognition of letters, words or parts of words written one over
the other, without any explicit separation between consecutive
fragments. It targets small devices with sufficient hardware
capabilities in terms of CPU power and memory.
\li Added Vietnamese handwriting recognition (T9 Write).
\li Added new layouts: Albanian, American English, Brazilian Portuguese,
French Canadian, Indonesian, Malay, Mexican Spanish, Slovak,
Slovenian, Thai, Turkish, Vietnamese, and Ukrainian.
\li Added latin extra layout for Russian.
\li The pinyin and tcime dictionaries are now bundled in the plugin by
default.
\li Added user dictionary and learning for Hunspell.
\endlist
\section2 Qt WebEngine Module
\list
\li Updated to Chromium 69.
\li Added QWebEngineUrlScheme interface to configure type and security
of custom URL schemes.
\li WebActions are now exposed in QML.
\li The view or page that triggered a download can now be read from
download items.
\li Support client SSL certificates, in so far as the operating system
supports them.
\endlist
\section2 Qt GUI Module
\list
\li Added presets for QGradient based on https://webgradients.com/.
\li Added 4xU16 RGBA64 formats to QImage, reading them from PNGs, and
uploading or grabbing them from OpenGL.
\li Added support to Windows UI Automation to the WinRT QPA, allowing
Qt-based UWP applications to operate with accessibility and
programmatic UI control tools.
\li Replaced the handling of tablet/touchscreen/touchpad/mouse input
with a unified implementation based on the Windows Pointer Input
Messages on Windows 8 and newer. Hardware such as the screen
digitizer in the MS Surface line is now supported without special
drivers.
\endlist
\section2 Qt Serial Bus Module
\list
\li Added a virtual CAN bus plugin for simulation without CAN hardware.
\li Added configuration options to canbusutil, for example for bitrate
setting.
\li Added CAN FD functionality to the PeakCAN plugin.
\li Added the \l {QCanBusDevice::readAllFrames}{readAllFrames()} and
\l {QCanBusDevice::clear}{clear()} functions to QCanBusDevice.
\endlist
\section2 Qt Bluetooth Module
\list
\li Added manufacturer data to the QBluetoothDeviceInfo objects that
are emitted from the BLE discovery agent. Decoding iBeacon payloads
is still up to the application.
\endlist
\section2 Qt for Automation Offering
\list
\li Qt MQTT now has full support for MQTT protocol level 5.
\li Qt KNX
\list
\li Support for KNXnet/IP Core Version 2.
\li Support for KNXnet/IP Routing Version 1.
\li Support for KNXnet/IP Tunneling Version 2.
\li Support for KNXnet/IP communication via TCP.
\li Tech Preview: Basic support for KNXnet/IP Secure Protocol.
\endlist
\li Qt OPC UA (Tech Preview)
\list
\li Support for events.
\li Added a batch read API.
\li Added a batch write API.
\li Added a TranslateBrowsePathsToNodeIds API.
\li Improved browse API.
\li Support for the Argument and ExpandedNodeId types.
\li Nodes can now be instantiated from an ExpandedNodeId.
\li Support for multi-dimensional arrays has been fixed.
\li Support reading and writing of extension objects.
\endlist
\endlist
\section1 New Modules
\list
\li Qt Remote Objects is now fully supported.
\li Qt WebGL Streaming Plugin is now fully supported.
\endlist
\section1 Platform Changes
\list
\li QTimeZone
\list
\li Now uses ICU, when available, in preference to Microsoft's
native APIs.
\endlist
\endlist
\section1 Technology Preview Features
\list
\li Qt for WebAssembly (TP2) - A platform target to compile Qt
applications for the web browsers using WebAssembly.
\endlist
\section1 Deprecated Modules
The following modules are part of the Qt 5.12 release, but are deprecated
and considered for removal in subsequent releases of Qt:
\list
\li Qt Script
\li Qt Quick Controls 1
\li Qt Canvas 3D
\endlist
\section1 List of API Changes
The pages below contain a list of API changes in Qt 5.12:
\list
\li \l{New Classes and Functions in Qt 5.12}
\li \l{Obsolete Classes}
\endlist
\section1 Additions to Other Qt 5 Releases
\list
\li \l{What's New in Qt 5.11}
\li \l{What's New in Qt 5.10}
\li \l{What's New in Qt 5.9}
\li \l{What's New in Qt 5.8}
\li \l{What's New in Qt 5.7}
\li \l{What's New in Qt 5.6}
\li \l{What's New in Qt 5.5}
\li \l{What's New in Qt 5.4}
\li \l{What's New in Qt 5.3}
\li \l{What's New in Qt 5.2}
\li \l{What's New in Qt 5.1}
\li \l{What's New in Qt 5.0}
\endlist
*/
/*!
\page newclasses512.html
\title New Classes and Functions in Qt 5.12
\brief A list of new APIs in Qt 5.12.
This page contains a comprehensive list of all new classes and functions
introduced in Qt 5.12. Links to new APIs in previous Qt 5 releases are found
at the bottom of this page.
\sincelist 5.12
\section1 Additions to Other Qt 5 Releases
\list
\li \l{What's New in Qt 5.11}
\li \l{What's New in Qt 5.10}
\li \l{What's New in Qt 5.9}
\li \l{What's New in Qt 5.8}
\li \l{What's New in Qt 5.7}
\li \l{What's New in Qt 5.6}
\li \l{What's New in Qt 5.5}
\li \l{What's New in Qt 5.4}
\li \l{What's New in Qt 5.3}
\li \l{What's New in Qt 5.2}
\li \l{What's New in Qt 5.1}
\li \l{What's New in Qt 5.0}
\endlist
*/