New Features in Qt 5.7: Difference between revisions
Jump to navigation
Jump to search
Pasikeranen (talk | contribs) m (Canvas3D new feature added) |
(Add needed categories.) |
||
(36 intermediate revisions by 16 users not shown) | |||
Line 1: | Line 1: | ||
[[Category:Developing with Qt::Qt 5]] | |||
[[Category:Release]] | |||
'''C++11 Support Required from the compiler''' | '''C++11 Support Required from the compiler''' | ||
Qt has enabled usage of C++11 in Qt applications for a long time, but with Qt 5.7 we are also enabling use of C++11 in the Qt modules. Therefore Qt 5.7 requires C++11 support from the compiler, and has removed support from older compilers not providing adequate C++11 support. | Qt has enabled usage of C++11 in Qt applications for a long time, but with Qt 5.7 we are also enabling use of C++11 in the Qt modules. Therefore Qt 5.7 requires C++11 support from the compiler, and has removed support from older compilers not providing adequate C++11 support. | ||
'''New Features''' | '''New Features (within existing modules)''' | ||
* Qt Core | * Qt Core | ||
** | ** Added qAsConst function to help using non-const Qt containers in C++11 range for loops | ||
* Qt | ** Qt event dispatchers use the poll() function on Unix now, making it possible for applications to have file descriptors > 1024 | ||
** | ** Added the ability to convert a floating point to its shortest, exact string form, without having to pre-calculate how many digits that is; QVariant uses this | ||
** Many clean-ups related to C++11, including using std::atomic as backend for QAtomic classes and adding QTypeInfo for char16_t and char32_t | |||
** QIODevice now supports multistreaming | |||
** QPluginLoader now works even if QT_NO_LIBRARY is set (e.g., linking against a static libc) | |||
* Qt GUI | * Qt GUI | ||
** | ** QImage smooth scale optimized for NEON. | ||
** Optimized the OpenGL function wrappers for speed and code size. QtGui library size has been significantly reduced due to a massive reduction in symbols. | |||
** QIcon::fromTheme can now use GTK+ icon theme caches for faster icon lookup | |||
* Qt Widgets | * Qt Widgets | ||
** | ** QTabBar now delegates placement of tab scroll buttons to the style. | ||
* | ** Qt Style Sheets can now optionally let widgets inherit font and palette from their parents. | ||
* Qt | |||
* Qt WebEngine | * Qt WebEngine | ||
** Based on Chromium | ** Based on Chromium 49 | ||
** Drag'n'Drop | ** Drag'n'Drop | ||
** Printing to PDF | |||
** Audio played in tab notification. | ** Audio played in tab notification. | ||
** Support for DRM-protected HTML5 video using Widevine pepper plugin | ** Support for DRM-protected HTML5 video using Widevine pepper plugin | ||
** API for evaluating javascript or installing qwebchannel in secure isolated javascript worlds | ** API for evaluating javascript or installing qwebchannel in secure isolated javascript worlds | ||
** Data to make better custom context menus | |||
** Compile time switch for AppStore compatibility on OS X | |||
* Qt QML | * Qt QML | ||
** Added JIT support for WinRT on x86 and x64. | ** Added JIT support for WinRT on x86 and x64. | ||
** Enabled JIT for 64-bit ARM Linux platforms. | ** Enabled JIT for 64-bit ARM Linux platforms. | ||
** All debug services now work with QJSEngine rather than QQmlEngine, which allows for non-QML JavaScript debugging or profiling. | |||
** The JavaScript debug service now supports debugging of multiple QJSEngine instances at the same time. | |||
** The profiler service can generate much larger traces without running out of memory, and will take much less time to do so now. | |||
** Custom connectors for debugging and profiling can be loaded with QQmlDebuggingEnabler::startDebugConnector() now. | |||
** The JavaScript debug service can now evaluate expressions without the QML engine being paused in a breakpoint. | |||
* Qt Quick | |||
** The inspector service now supports all subclasses of QQuickWindow, which makes Qt Creator's inspection feature useful. | |||
* Embedded platforms | * Embedded platforms | ||
** Added support for NVIDIA DRIVE CX boards (Tegra X1, AArch64) | ** Added support for NVIDIA DRIVE CX boards (Tegra X1, AArch64) | ||
** Added support for the Raspberry Pi 3 (32-bit mode) | |||
** Added support for NXP i.MX7-based devices (no GPU; uses linuxfb and the Qt Quick 2D Renderer) | |||
** Improved theming support with eglfs | |||
* Desktop platforms | * Desktop platforms | ||
** | ** X11: QMenuBar uses the unified D-Bus AppMenu menubar when the desktop environment supports it (e.g. Ubuntu Unity) | ||
* | * Mobile platforms | ||
** | ** Android: Qt can now be used to easily create Android Services. | ||
* Qt | * Qt Canvas 3D | ||
** New version of three.js | ** New version of three.js | ||
* Qt | * Qt NFC | ||
** | ** API ported to Android. | ||
* Qt | * Qt Multimedia | ||
** | ** Added support for tvOS. | ||
** Extended QML playlist API. | |||
** | |||
* Qt Bluetooth | * Qt Bluetooth | ||
** Technical preview for Qt Bluetooth Low Energy peripheral role feature (Bluez only) | ** Technical preview for Qt Bluetooth Low Energy peripheral role feature (Bluez only) | ||
* Qt Sensors | |||
** Added [https://github.com/hadess/iio-sensor-proxy iio-sensor-proxy] backend for Linux. It provides light, orientation, and compass sensors. | |||
'''New Modules''' | |||
* Qt 3D | * Qt 3D | ||
** | ** Support for Compute Shaders on supported hardware | ||
* Quick Controls 2 | ** Support for loading multi-image DDS and KTX textures including cubemaps, mip chains, array textures | ||
** A new light-weight set of embedded and mobile | ** Improved support for compressed texture formats | ||
** Render surface made explicit - will later allow for multiple renders of the same scene to different surfaces and other use cases | |||
** Extended Input API and support for device plugins | |||
** Picking support improved | |||
* Qt Quick Controls 2 | |||
** A new light-weight set of embedded and mobile oriented controls | |||
** Based on a flexible template system that enables rapid development of entire custom styles and user experiences | ** Based on a flexible template system that enables rapid development of entire custom styles and user experiences | ||
** Built-in styles: | ** Built-in styles: | ||
Line 53: | Line 77: | ||
*** Universal style - a style based on the Microsoft Universal Design Guidelines | *** Universal style - a style based on the Microsoft Universal Design Guidelines | ||
** Can be mixed with Qt Quick Controls 1.0, but the APIs are not compatible | ** Can be mixed with Qt Quick Controls 1.0, but the APIs are not compatible | ||
* Qt | * Qt Charts | ||
** | ** Previously commercial-only Qt Charts module is now included in Qt under also GPLv3 license for open source users | ||
* Qt Data Visualization | |||
** Previously commercial-only Qt Data Visualization module is now included in Qt under also GPLv3 license for open source users | |||
* Qt Virtual Keyboard | |||
** Previously commercial-only Qt Virtual Keyboard module is now included in Qt under also GPLv3 license for open source users | |||
* Qt Purchasing | |||
** Previously commercial-only Qt Purchasing module is now included in Qt under also LGPLv3 and GPLv3 license for open source users | |||
* Qt Quick 2D Renderer | |||
** Previously commercial-only Qt Quick 2D Renderer module is now included in Qt under also GPLv3 license for open source users | |||
''' | '''Technology Preview Modules''' | ||
* Qt Wayland Compositor | * Qt Wayland Compositor | ||
** Pure QML API | ** Pure QML API | ||
Line 77: | Line 97: | ||
** Completely new module for C++ and QML | ** Completely new module for C++ and QML | ||
** Static and runtime integration of SCXML models into Qt code | ** Static and runtime integration of SCXML models into Qt code | ||
* Qt Gamepad | |||
** New module to process input from gamepads in C++ and QML applications. | |||
** Supports Windows (XInput), Linux (evdev), Android, iOS. | |||
* Qt Serial Bus | |||
** New module for C++ | |||
** Supports Modbus and CAN bus | |||
'''Deprecated Modules''' | |||
The following modules are part of Qt 5.7 release, but deprecated and considered for removal in subsequent releases of Qt: | |||
* Qt Script | |||
'''Removed Modules''' | |||
With Qt 5.7 the following modules are no longer part of the final release packages: | |||
* Qt Enginio | |||
''' Configurations''' | ''' Configurations''' | ||
* Qt 5.7 has deprecated configurations that do not provide adequate C++11 support. For details, please see [http://wiki.qt.io/Qt-5.7.0-tools-and-versions Qt 5.7 Tools and Versions] in the wiki. | * Qt 5.7 has deprecated configurations that do not provide adequate C++11 support. For details, please see [http://wiki.qt.io/Qt-5.7.0-tools-and-versions Qt 5.7 Tools and Versions] in the wiki. | ||
* Mobile platforms: Minimum required versions upgraded to iOS 7 and Android 4.1 | |||
{{Release Information}} | |||
Latest revision as of 12:17, 22 November 2016
C++11 Support Required from the compiler
Qt has enabled usage of C++11 in Qt applications for a long time, but with Qt 5.7 we are also enabling use of C++11 in the Qt modules. Therefore Qt 5.7 requires C++11 support from the compiler, and has removed support from older compilers not providing adequate C++11 support.
New Features (within existing modules)
- Qt Core
- Added qAsConst function to help using non-const Qt containers in C++11 range for loops
- Qt event dispatchers use the poll() function on Unix now, making it possible for applications to have file descriptors > 1024
- Added the ability to convert a floating point to its shortest, exact string form, without having to pre-calculate how many digits that is; QVariant uses this
- Many clean-ups related to C++11, including using std::atomic as backend for QAtomic classes and adding QTypeInfo for char16_t and char32_t
- QIODevice now supports multistreaming
- QPluginLoader now works even if QT_NO_LIBRARY is set (e.g., linking against a static libc)
- Qt GUI
- QImage smooth scale optimized for NEON.
- Optimized the OpenGL function wrappers for speed and code size. QtGui library size has been significantly reduced due to a massive reduction in symbols.
- QIcon::fromTheme can now use GTK+ icon theme caches for faster icon lookup
- Qt Widgets
- QTabBar now delegates placement of tab scroll buttons to the style.
- Qt Style Sheets can now optionally let widgets inherit font and palette from their parents.
- Qt WebEngine
- Based on Chromium 49
- Drag'n'Drop
- Printing to PDF
- Audio played in tab notification.
- Support for DRM-protected HTML5 video using Widevine pepper plugin
- API for evaluating javascript or installing qwebchannel in secure isolated javascript worlds
- Data to make better custom context menus
- Compile time switch for AppStore compatibility on OS X
- Qt QML
- Added JIT support for WinRT on x86 and x64.
- Enabled JIT for 64-bit ARM Linux platforms.
- All debug services now work with QJSEngine rather than QQmlEngine, which allows for non-QML JavaScript debugging or profiling.
- The JavaScript debug service now supports debugging of multiple QJSEngine instances at the same time.
- The profiler service can generate much larger traces without running out of memory, and will take much less time to do so now.
- Custom connectors for debugging and profiling can be loaded with QQmlDebuggingEnabler::startDebugConnector() now.
- The JavaScript debug service can now evaluate expressions without the QML engine being paused in a breakpoint.
- Qt Quick
- The inspector service now supports all subclasses of QQuickWindow, which makes Qt Creator's inspection feature useful.
- Embedded platforms
- Added support for NVIDIA DRIVE CX boards (Tegra X1, AArch64)
- Added support for the Raspberry Pi 3 (32-bit mode)
- Added support for NXP i.MX7-based devices (no GPU; uses linuxfb and the Qt Quick 2D Renderer)
- Improved theming support with eglfs
- Desktop platforms
- X11: QMenuBar uses the unified D-Bus AppMenu menubar when the desktop environment supports it (e.g. Ubuntu Unity)
- Mobile platforms
- Android: Qt can now be used to easily create Android Services.
- Qt Canvas 3D
- New version of three.js
- Qt NFC
- API ported to Android.
- Qt Multimedia
- Added support for tvOS.
- Extended QML playlist API.
- Qt Bluetooth
- Technical preview for Qt Bluetooth Low Energy peripheral role feature (Bluez only)
- Qt Sensors
- Added iio-sensor-proxy backend for Linux. It provides light, orientation, and compass sensors.
New Modules
- Qt 3D
- Support for Compute Shaders on supported hardware
- Support for loading multi-image DDS and KTX textures including cubemaps, mip chains, array textures
- Improved support for compressed texture formats
- Render surface made explicit - will later allow for multiple renders of the same scene to different surfaces and other use cases
- Extended Input API and support for device plugins
- Picking support improved
- Qt Quick Controls 2
- A new light-weight set of embedded and mobile oriented controls
- Based on a flexible template system that enables rapid development of entire custom styles and user experiences
- Built-in styles:
- Default style - a simple and minimal all-round style that offers the maximum performance
- Material style - a style based on the Google Material Design Guidelines
- Universal style - a style based on the Microsoft Universal Design Guidelines
- Can be mixed with Qt Quick Controls 1.0, but the APIs are not compatible
- Qt Charts
- Previously commercial-only Qt Charts module is now included in Qt under also GPLv3 license for open source users
- Qt Data Visualization
- Previously commercial-only Qt Data Visualization module is now included in Qt under also GPLv3 license for open source users
- Qt Virtual Keyboard
- Previously commercial-only Qt Virtual Keyboard module is now included in Qt under also GPLv3 license for open source users
- Qt Purchasing
- Previously commercial-only Qt Purchasing module is now included in Qt under also LGPLv3 and GPLv3 license for open source users
- Qt Quick 2D Renderer
- Previously commercial-only Qt Quick 2D Renderer module is now included in Qt under also GPLv3 license for open source users
Technology Preview Modules
- Qt Wayland Compositor
- Pure QML API
- Improved C++ API with added convenience
- New convenient API for making extensions and using them from both QML and C++
- Qt SCXML
- Completely new module for C++ and QML
- Static and runtime integration of SCXML models into Qt code
- Qt Gamepad
- New module to process input from gamepads in C++ and QML applications.
- Supports Windows (XInput), Linux (evdev), Android, iOS.
- Qt Serial Bus
- New module for C++
- Supports Modbus and CAN bus
Deprecated Modules
The following modules are part of Qt 5.7 release, but deprecated and considered for removal in subsequent releases of Qt:
- Qt Script
Removed Modules
With Qt 5.7 the following modules are no longer part of the final release packages:
- Qt Enginio
Configurations
- Qt 5.7 has deprecated configurations that do not provide adequate C++11 support. For details, please see Qt 5.7 Tools and Versions in the wiki.
- Mobile platforms: Minimum required versions upgraded to iOS 7 and Android 4.1