Qt 5.7不再兼容C++98,是一个全面体现C++11优势的版本,从底层实现到api设计,充分使用C++11特性,比如非常方便的auto和lambda函数。由于Qt5.6是一个LTS版本,所以设计时向C++98靠拢,使用了少量的C++11特性。Qt5.7将是更加令人期待的版本。
Qt5.7的新特性:
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.
-
-
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
-
Spellchecking
-
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
-
-
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.
-
-
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)
-
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)
-
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
-
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
-
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:
-
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.6 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
via qt