Yesterday, just 3 months after the previous major release, version 5.7 of the Qt cross-platform framework was released.
Qt allows you to develop applications using C ++ and the declarative programming language QML, supports all major desktop and mobile platforms, as well as some embedded and has open source code. There is a commercial version of Qt containing additional proprietary modules.
The new release brought a change of license, the opening of the code of proprietary modules, the transition to C ++ 11, the stabilization of some experimental modules, as well as new experimental modules and the removal of obsolete ones.
Starting with version 5.7, Qt is no longer released under the LGPLv2.1. Now the core modules (Qt Essentials) are available under the LGPLv3 and GPLv2. Utilities and development tools (including Qt Creator) and new modules are now released under GPLv3. These changes relate only to the open source version and for users of the commercial version everything remains as before.
More information about changing the license can be found in this article .
After the release of the LTS version , it became possible to discontinue support for obsolete compilers in new versions and start actively using the features of C ++ 11 in the Qt code. The list of supported platforms is here .
Using the C ++ 11 tools, the codebase has been significantly cleaned. QAtomic is implemented using std :: atomic. Added QTypeInfo for char16_t and char32_t.
To use Qt containers in range for, a special qAsConst function has been added .
As of Qt 5.7, the open source and proprietary versions are identical. Under the GPLv3 license in the open source version, the following modules are added:
The only exception is the Qt Quick Compiler, which is planned to be integrated into Qt 5.8.
Qt Creator 4.0 adds the following features from the proprietary version:
Qt Quick Controls 2.0 is a new implementation of a component library for creating user interfaces with Qt Quick.
Available as a preview version in Qt 5.6 (under the name Qt Labs Controls), this module is now included with Qt. The new version is more lightweight and optimized for use on embedded devices, is built on the principle of templates, allowing you to completely change the appearance of the components and has, in addition to the standard theme, support for the Material and Universal styles.
As an example of an application with an interface on Qt Quick Controls 2.0, my open source time tracker can be viewed.
Available as a preview version in two previous releases, Qt 3D is included with Qt. This is a 3D engine with API in C ++ and QML, which allows embedding 3D content into the application. In addition to rendering, use of input devices in three-dimensional space is available, including such specialized devices as 3D mice, gamepads, joysticks, and everything that works with the Qt Gamepad. There is also a test version of the library of geometric primitives, materials and other utilities Qt3DExtras and Qt 3D Scene Editor - a concept editor of three-dimensional scenes with the ability to import into QML.
The structure also includes a new version of the integrated development environment for Qt. In addition to the features already mentioned from the proprietary version, Qt Creator 4.0 improved support for projects on CMake and Qt Quick Designer, combined debugging and profiling modes, added a new flat theme and new QML profiling mode - Flamegraph.
Qt for Device Creation has added OTA update functionality, the ability to use Windows for development, and support for QNX. Windows Embedded is no longer supported. Work has been done to bring Qt for Device Creation to compatibility with the Yocto Project.
You can read more about changes to Qt for Device Creation on the blog .
Added a preliminary version of the Qt Wayland Compositor module, which allows you to implement your own composer Wayland. The module aims to be used in embedded devices that require support for multiple concurrent applications. The module API in C ++ and QML, there is also an API for creating Wayland extensions in C ++ and QML.
Also included in Qt 5.7 is a preliminary version of the Qt SCXML module, which allows the use of SCXML state machines.
Qt 5.7 includes a preliminary version of the Qt Gamepad, which allows you to work with a gamepad from C ++ and QML. Windows, Linux, Android and iOS are supported.
Qt Core now uses poll () instead of select (), which allows more than 1024 open file descriptors to be processed. Added support for multiple channels in QIODevice.
Qt QML received support for JIT on WinRT and 64-bit ARM, the ability to debug several QJSEngine simultaneously, improvements in the debugger and profiler.
In Qt GUI, NEON optimizations for image scaling are used, wrappers for OpenGL functions are optimized and work with icons from themes using the GTK + cache is accelerated .
The Chromium engine in Qt WebEngine has been updated to version 49 and received support for printing to PDF, drag'n'Drop and playing protected DRM HTML5 video using the Widevine plugin.
Qt Multimedia Playlist has been improved in Qt Multimedia, and tvOS support has been added.
Added test support for the BLE peripheral role for Qt Bluetooth (only when using Bluez as a backend).
The Qt Quick 1 and Qt Enginio modules are removed from delivery.
Source: https://habr.com/ru/post/303498/
All Articles