New Features in Qt 5.12: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
Allan Jensen (talk | contribs) No edit summary |
||
(44 intermediate revisions by 28 users not shown) | |||
Line 1: | Line 1: | ||
[[Category:Developing with Qt::Qt 5]] | [[Category:Developing with Qt::Qt 5]] | ||
[[Category:Release]] | [[Category:Release]] | ||
Note that this list should be considered as work in progress until the first Beta release. | |||
'''New Features (within existing modules)''' | '''New Features (within existing modules)''' | ||
* Qt Core | |||
** Support for CBOR data similar to existing JSON support. | |||
** Added the static "hashLength" method to QCryptographicHash, which returns the length of a hash's output. | |||
** Added wildcardToRegularExpression helper method to QRegularExpression for easier wildcard implementation in user code. | |||
** Added anchoredPattern helper method to QRegularExpression for easier exact matching implementation in user code. | |||
** Added QRegularExpression support to QSortFilterProxyModel | |||
* Qt GUI | |||
** Added support to Windows UI Automation to the WinRT QPA, allowing Qt-based UWP applications to operate with accessibility and programmatic UI control tools. | |||
** 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 like the screen digitizer in the MS Surface line is now supported without special drivers. | |||
** Added presets for QGradient based on https://webgradients.com/ | |||
** Added 4xU16 RGBA64 formats to QImage, reading them from PNG and TIFF, and uploading or grabbing them from OpenGL. | |||
* Qt Network | * Qt Network | ||
** Added Datagram Transport Layer Security over UDP support. | ** Added DTLS (Datagram Transport Layer Security) over UDP support. | ||
** Added renegotiation to Security Transport back-end. | ** Added renegotiation to Security Transport back-end. | ||
** Added ALPN support and HTTP/2 protocol negotiation to Security Transport back-end. | ** Added ALPN support and HTTP/2 protocol negotiation to Security Transport back-end. | ||
** Added PKCS#8 support in the generic ssl backend (WinRT and Secure Transport). | |||
** Added QPasswordDigestor: a new namespace which contains password-based key derivation functions (currently PBKDF1 and PBKDF2). | |||
* Qt QML | |||
** The JavaScript engine now supports ECMAScript 7 | |||
** ECMAScript modules can be loaded directly with QJSEngine::importModule() and imported in .qml files when using the .mjs file extension. | |||
* Qt Quick | |||
** 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.) | |||
** 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) | |||
** DragHandler is now a multi-point handler: if you set minimumPointCount to 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). | |||
** Added support for pregenerated distance field caches for faster startup times . | |||
** 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. | |||
** 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. | |||
* Qt Quick Controls 2 | * Qt Quick Controls 2 | ||
** | ** Dial: added inputMode property, which adds two new ways of interacting with it: horizontally and vertically. These new input modes use a relative input system, which means that, unlike the old absolute input system, changes to the dial's position are "added" 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. | ||
** | ** Control, 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. | ||
** Added implicit*Width and implicit*Height properties (e.g. implicitHeaderWidth, implicitContentWidth, etc.) to simplify complex implicit size bindings. | ** Added implicit*Width and implicit*Height properties (e.g. implicitHeaderWidth, implicitContentWidth, etc.) to simplify complex implicit size bindings. | ||
** SwipeView, DialogButtonBox: added contentWidth and contentHeight properties. | ** SwipeView, DialogButtonBox: added contentWidth and contentHeight properties. | ||
Line 18: | Line 43: | ||
** Slider, RangeSlider: added touchDragThreshold property for configuring the threshold to initiate the touch 'drag' of the handle of the slider. The mouse 'drag' won't be affected by the property. | ** Slider, RangeSlider: added touchDragThreshold property for configuring the threshold to initiate the touch 'drag' of the handle of the slider. The mouse 'drag' won't be affected by the property. | ||
** TextArea, TextField: added placeholderTextColor property for user convenience to customize the placeholderText color to fit the backgrounds. | ** TextArea, TextField: added placeholderTextColor property for user convenience to customize the placeholderText color to fit the backgrounds. | ||
** 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 Variant=Dense in the | ** 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 Variant=Dense in the qtquickcontrols2.conf file. | ||
** DialogButtonBox: added buttonLayout property that can be used to arrange the buttons. | ** DialogButtonBox: added buttonLayout property that can be used to arrange the buttons. | ||
** Tumbler: added positionViewAtIndex() function that calls the respective PathView/ListView function, depending on the value of wrap. This allows changing currentIndex without animations. | ** Tumbler: added positionViewAtIndex() function that calls the respective PathView/ListView function, depending on the value of wrap. This allows changing currentIndex without animations. | ||
** | ** Control, Popup: added horizontalPadding and verticalPadding properties as a convenient way to set both left and right, or top and bottom paddings in one go. | ||
** | ** ToolTip: added non-attached show() and hide() methods to give the same level of convenience for showing non-attached tooltips with certain parameters. | ||
* Qt Serial Bus | |||
** Added a virtual CAN bus plugin for simulation without CAN hardware | |||
** Added configuration options to canbusutil, e.g. for bitrate setting | |||
** Added CAN FD functionality to the PeakCAN plugin | |||
** Added the readAllFrames() and clear() functions to QCanBusDevice | |||
* Qt WebEngine | |||
** Updated to Chromium 69 | |||
** QWebEngineUrlScheme interface to configure type and security of custom URL schemes. | |||
** WebActions now exposed in QML. | |||
** The view or page where a download was triggered can now be read from download items. | |||
** Client SSL certificates are now supported, read from system settings on macOS and Windows and NSS database on Linux. | |||
* Qt Labs Platform | * Qt Labs Platform | ||
** Menu, MenuItem, SystemTrayIcon: deprecated iconName and iconSource in favor of icon.name and icon.source grouped properties. | ** Menu, MenuItem, SystemTrayIcon: deprecated iconName and iconSource in favor of icon.name and icon.source grouped properties. | ||
Line 30: | Line 66: | ||
** Introduced a virtualkeyboard module, which can be linked against an extension plugin. This module provides the C++ API necessary for creating an input method. | ** Introduced a virtualkeyboard module, which can be linked against an extension plugin. This module provides the C++ API necessary for creating an input method. | ||
** Added build time option to exclude all styles from the plugin. | ** Added build time option to exclude all styles from the plugin. | ||
** 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. | |||
** Added Vietnamese handwriting recognition (T9 Write). | ** Added Vietnamese handwriting recognition (T9 Write). | ||
** Added Vietnamese | ** Added new layouts: Albanian, American English, French Canadian, Indonesian, Malay, Portugese Brazil, Slovak, Slovenian, Spanish Mexican, Thai, Turkish, Vietnamese and Ukrainian. | ||
** Added latin extra layout for Russian. | ** Added latin extra layout for Russian. | ||
** The pinyin and tcime dictionaries are now bundled in the plugin by default. | ** The pinyin and tcime dictionaries are now bundled in the plugin by default. | ||
** Added user dictionary and learning for Hunspell. | |||
* Qt Bluetooth | |||
** Added ability to discover manufacturer data via QBluetoothDeviceDiscovery | |||
* Qt 3D | |||
** Specify an animation to load within a file containing many by name or index. | |||
** Enable constant (stepped) animation curves. | |||
** Fixes for creation and re-parenting of QNodes in some circumstances. | |||
** Frontend texture objects now properly reflect loaded texture properties. | |||
** TextureImage does not have to be a child of a texture any longer. | |||
** Reduce CPU usage when not in the simulation loop. | |||
** EntityLoader is now able to load from a Component as well as from a file. | |||
** Renderer support for OpenGL ES 3.1. | |||
** Performance and bug fixes in the renderer back end. | |||
* Qt Wayland Compositor | |||
** Added support for xdg-shell stable (and deprecated unstable v5). | |||
** Added support for xdg-decoration-unstable-v1 for server-side window decorations. | |||
* Qt Websockets | |||
** QWebsocket gained the "bytesToWrite" function. | |||
* Qt Location | |||
** Updated MapboxGL plugin, with support for QNX7. | |||
** Exposed add/remove transitions in MapItemView. | |||
** MapItemView now subclasses MapItemGroup, and becomes nestable into itself. Also usable as a delegate of itself. | |||
** PlaceSearchModel now allows to incrementally populate the model, as opposed to only switching pages. | |||
** Introduced Map.visibleArea, to restrict the visible area of the map. | |||
** MapItem's geoShape property is now R/W, and has a virtual setter in the base class. | |||
** 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. | |||
** Added support for Route legs. | |||
*Qt Test | |||
**std::tuple errors have now a clear diagnostic when using QCOMPARE. | |||
'''New Modules''' | '''New Modules''' | ||
* | * Qt Remote Objects fully supported | ||
* Qt WebGL Streaming Plugin fully supported (Stream applications to browsers over the network) | |||
'''Platform Changes''' | '''Platform Changes''' | ||
* QTimeZone | * QTimeZone | ||
** Now uses ICU, when available, in preference to Microsoft's native APIs | ** Now uses ICU, when available, in preference to Microsoft's native APIs | ||
* macOS | |||
** Added support for QSurfaceType::MetalSurface. | |||
** Added support for QSurfaceType::VulkanSurface and QVulkanWindow via use of MoltenVK. | |||
* Wayland | |||
** Added support for xdg-shell stable (and deprecated unstable v5). | |||
** Made the default window decorations look nicer. | |||
** Added support for the Wayland extensions: xdg-decoration-unstable-v1, xdg-output-unstable-v1. | |||
'''Technology Preview | '''Technology Preview Platform''' | ||
* Qt | * Qt for WebAssembly (TP2) - A platform target that enables compiling Qt applications for the web browsers using WebAssembly. | ||
'''Qt for Automation''' | |||
* Qt MQTT | |||
** Full support for MQTT protocol level 5 | |||
* Qt KNX | |||
** Support for KNXnet/IP Core Version 2 | |||
** Support for KNXnet/IP Routing Version 1 | |||
** Support for KNXnet/IP Tunneling Version 2 | |||
** Support for KNXnet/IP communication via TCP | |||
** Tech Preview: Basic support for KNXnet/IP Secure Protocol | |||
* Qt OPC UA (TP) | |||
** Support for Events | |||
** Addition of a batch read API | |||
** Addition of a batch write API | |||
** Addition of a TranslateBrowsePathsToNodeIds API | |||
** Improved browse API | |||
** Support for the Argument and ExpandedNodeId types | |||
** Nodes can now be instantiated from an ExpandedNodeId | |||
** Support for multi-dimensional arrays has been fixed | |||
** Support reading and writing of extension objects | |||
'''Deprecated Modules''' | '''Deprecated Modules''' | ||
Line 49: | Line 143: | ||
* Qt Script | * Qt Script | ||
* Qt Quick Controls 1 | * Qt Quick Controls 1 | ||
* Qt Canvas 3D | |||
'''Configurations''' | '''Configurations''' | ||
{{Release Information}} | {{Release Information}} |
Latest revision as of 12:15, 23 November 2018
Note that this list should be considered as work in progress until the first Beta release.
New Features (within existing modules)
- Qt Core
- Support for CBOR data similar to existing JSON support.
- Added the static "hashLength" method to QCryptographicHash, which returns the length of a hash's output.
- Added wildcardToRegularExpression helper method to QRegularExpression for easier wildcard implementation in user code.
- Added anchoredPattern helper method to QRegularExpression for easier exact matching implementation in user code.
- Added QRegularExpression support to QSortFilterProxyModel
- Qt GUI
- Added support to Windows UI Automation to the WinRT QPA, allowing Qt-based UWP applications to operate with accessibility and programmatic UI control tools.
- 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 like the screen digitizer in the MS Surface line is now supported without special drivers.
- Added presets for QGradient based on https://webgradients.com/
- Added 4xU16 RGBA64 formats to QImage, reading them from PNG and TIFF, and uploading or grabbing them from OpenGL.
- Qt Network
- Added DTLS (Datagram Transport Layer Security) over UDP support.
- Added renegotiation to Security Transport back-end.
- Added ALPN support and HTTP/2 protocol negotiation to Security Transport back-end.
- Added PKCS#8 support in the generic ssl backend (WinRT and Secure Transport).
- Added QPasswordDigestor: a new namespace which contains password-based key derivation functions (currently PBKDF1 and PBKDF2).
- Qt QML
- The JavaScript engine now supports ECMAScript 7
- ECMAScript modules can be loaded directly with QJSEngine::importModule() and imported in .qml files when using the .mjs file extension.
- Qt Quick
- 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.)
- 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)
- DragHandler is now a multi-point handler: if you set minimumPointCount to 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).
- Added support for pregenerated distance field caches for faster startup times .
- 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.
- 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.
- Qt Quick Controls 2
- Dial: added inputMode property, which adds two new ways of interacting with it: horizontally and vertically. These new input modes use a relative input system, which means that, unlike the old absolute input system, changes to the dial's position are "added" 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.
- Control, 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.
- Added implicit*Width and implicit*Height properties (e.g. implicitHeaderWidth, implicitContentWidth, etc.) to simplify complex implicit size bindings.
- SwipeView, DialogButtonBox: added contentWidth and contentHeight properties.
- RangeSlider: added valueAt() function, which allows seeing up-to-date values in tooltips for each handle when live is set to false (copied from Slider).
- RangeSlider: added first.moved() and second.moved() signals, similar to Slider's moved() signal.
- 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.
- Popup: added anchors.centerIn to allow a convenient way of centering a popup.
- QQuickStyle: added stylePathList() and addStylePath() methods for managing the list of directories where Qt Quick Controls 2 searches for available styles.
- Slider, RangeSlider: added touchDragThreshold property for configuring the threshold to initiate the touch 'drag' of the handle of the slider. The mouse 'drag' won't be affected by the property.
- TextArea, TextField: added placeholderTextColor property for user convenience to customize the placeholderText color to fit the backgrounds.
- 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 Variant=Dense in the qtquickcontrols2.conf file.
- DialogButtonBox: added buttonLayout property that can be used to arrange the buttons.
- Tumbler: added positionViewAtIndex() function that calls the respective PathView/ListView function, depending on the value of wrap. This allows changing currentIndex without animations.
- Control, Popup: added horizontalPadding and verticalPadding properties as a convenient way to set both left and right, or top and bottom paddings in one go.
- ToolTip: added non-attached show() and hide() methods to give the same level of convenience for showing non-attached tooltips with certain parameters.
- Qt Serial Bus
- Added a virtual CAN bus plugin for simulation without CAN hardware
- Added configuration options to canbusutil, e.g. for bitrate setting
- Added CAN FD functionality to the PeakCAN plugin
- Added the readAllFrames() and clear() functions to QCanBusDevice
- Qt WebEngine
- Updated to Chromium 69
- QWebEngineUrlScheme interface to configure type and security of custom URL schemes.
- WebActions now exposed in QML.
- The view or page where a download was triggered can now be read from download items.
- Client SSL certificates are now supported, read from system settings on macOS and Windows and NSS database on Linux.
- Qt Labs Platform
- Menu, MenuItem, SystemTrayIcon: deprecated iconName and iconSource in favor of icon.name and icon.source grouped properties.
- Menu, MenuItem, SystemTrayIcon: added icon.mask grouped property.
- Qt Virtual Keyboard
- Introduced an extension interface for the virtual keyboard. All the current input methods and some special keyboard layouts (e.g. Hunspell, OpenWnn, etc.) have been moved to extensions. The extension interface allows third parties to create a new input method 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 extension to the system.
- Introduced a virtualkeyboard module, which can be linked against an extension plugin. This module provides the C++ API necessary for creating an input method.
- Added build time option to exclude all styles from the plugin.
- 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.
- Added Vietnamese handwriting recognition (T9 Write).
- Added new layouts: Albanian, American English, French Canadian, Indonesian, Malay, Portugese Brazil, Slovak, Slovenian, Spanish Mexican, Thai, Turkish, Vietnamese and Ukrainian.
- Added latin extra layout for Russian.
- The pinyin and tcime dictionaries are now bundled in the plugin by default.
- Added user dictionary and learning for Hunspell.
- Qt Bluetooth
- Added ability to discover manufacturer data via QBluetoothDeviceDiscovery
- Qt 3D
- Specify an animation to load within a file containing many by name or index.
- Enable constant (stepped) animation curves.
- Fixes for creation and re-parenting of QNodes in some circumstances.
- Frontend texture objects now properly reflect loaded texture properties.
- TextureImage does not have to be a child of a texture any longer.
- Reduce CPU usage when not in the simulation loop.
- EntityLoader is now able to load from a Component as well as from a file.
- Renderer support for OpenGL ES 3.1.
- Performance and bug fixes in the renderer back end.
- Qt Wayland Compositor
- Added support for xdg-shell stable (and deprecated unstable v5).
- Added support for xdg-decoration-unstable-v1 for server-side window decorations.
- Qt Websockets
- QWebsocket gained the "bytesToWrite" function.
- Qt Location
- Updated MapboxGL plugin, with support for QNX7.
- Exposed add/remove transitions in MapItemView.
- MapItemView now subclasses MapItemGroup, and becomes nestable into itself. Also usable as a delegate of itself.
- PlaceSearchModel now allows to incrementally populate the model, as opposed to only switching pages.
- Introduced Map.visibleArea, to restrict the visible area of the map.
- MapItem's geoShape property is now R/W, and has a virtual setter in the base class.
- 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.
- Added support for Route legs.
- Qt Test
- std::tuple errors have now a clear diagnostic when using QCOMPARE.
New Modules
- Qt Remote Objects fully supported
- Qt WebGL Streaming Plugin fully supported (Stream applications to browsers over the network)
Platform Changes
- QTimeZone
- Now uses ICU, when available, in preference to Microsoft's native APIs
- macOS
- Added support for QSurfaceType::MetalSurface.
- Added support for QSurfaceType::VulkanSurface and QVulkanWindow via use of MoltenVK.
- Wayland
- Added support for xdg-shell stable (and deprecated unstable v5).
- Made the default window decorations look nicer.
- Added support for the Wayland extensions: xdg-decoration-unstable-v1, xdg-output-unstable-v1.
Technology Preview Platform
- Qt for WebAssembly (TP2) - A platform target that enables compiling Qt applications for the web browsers using WebAssembly.
Qt for Automation
- Qt MQTT
- Full support for MQTT protocol level 5
- Qt KNX
- Support for KNXnet/IP Core Version 2
- Support for KNXnet/IP Routing Version 1
- Support for KNXnet/IP Tunneling Version 2
- Support for KNXnet/IP communication via TCP
- Tech Preview: Basic support for KNXnet/IP Secure Protocol
- Qt OPC UA (TP)
- Support for Events
- Addition of a batch read API
- Addition of a batch write API
- Addition of a TranslateBrowsePathsToNodeIds API
- Improved browse API
- Support for the Argument and ExpandedNodeId types
- Nodes can now be instantiated from an ExpandedNodeId
- Support for multi-dimensional arrays has been fixed
- Support reading and writing of extension objects
Deprecated Modules
The following modules are part of Qt 5.12 release, but deprecated and considered for removal in subsequent releases of Qt:
- Qt Script
- Qt Quick Controls 1
- Qt Canvas 3D
Configurations