What's New in Qt 5.7

New Modules

The Qt Quick Controls 2 module that was previously available as a technology preview is now a fully supported module, providing the following features:

  • 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 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.

The following modules that were previously commercial-only, are now available under GPLv3 license for the open source users:

  • Qt Quick 2D Renderer
    • Enables running Qt Quick applications on hardware without OpenGL.
  • Qt Charts
    • Provides ready to use controls for depicting different types of 2D charts and graphs.
  • Qt Data Visualization
    • Enables visualizing data using 3D charts and graphs.
  • Qt Purchasing
    • Provides API to support in-app purchasing use cases with Google Play and Apple Store.

In addition, the following new modules are available as technology preview releases, enabling Qt users to provide feedback:

  • Qt Gamepad
    • Enables Qt gaming applications to respond to gamepad input.
  • Qt SCXML
    • Enables static and runtime integration of SCXML models into Qt code.

New Features in Qt 5.7

Qt 3D Module

  • Added support for Compute Shaders on supported hardware.
  • Added support for loading multi-image DDS and KTX textures including cubemaps, mip chains, and array textures.
  • Improved support for compressed texture formats.
  • Made Render surface explicit.
  • Extended Input API and support for device plugins.
  • Improved picking support.

Qt Core Module

  • Added qAsConst function to help using non-const Qt containers in C++11 range for loops.
  • Enabled Qt event dispatchers to use the poll() function on Unix now, making it possible for applications to have file descriptors greater than 1024.
  • Added support for converting a floating point to its shortest and exact string form, without having to pre-calculate the number of digits.
  • Improved C++11 support by using std::atomic as backend for QAtomic classes and adding QTypeInfo for char16_t and char32_t.
  • Added QIODevice support for multi-streaming.
  • Enabled QPluginLoader to work even if QT_NO_LIBRARY is set (for example, linking against a static libc).

Qt Canvas3D Module

  • Upgraded the three.js 3rd party library.

Qt GUI Module

  • Optimized QImage smooth scaling for NEON.
  • Optimized the OpenGL function wrappers for speed and code size. The QtGui library size has been significantly reduced due to a massive reduction in symbols.

Qt Multimedia Module

  • Added support for tvOS.
  • Extended QML playlist API.

Qt Platform Abstraction (QPA)

  • Added support for NVIDIA DRIVE CX boards (Tegra X1, AArch64).
  • Improved support for theming with eglfs.
  • Enabled QMenuBar to use the unified D-Bus AppMenu menubar on supported X11-based desktop environments such as Ubuntu Unity.
  • Added support for creating Android services.

Qt QML Module

  • Added JIT support for WinRT on x86 and x64.
  • Enabled JIT for 64-bit ARM Linux platforms.
  • Enabled all debug services to work with QJSEngine (instead of QQmlEngine), which allows non-QML JavaScript debugging or profiling.
  • Added support for debugging multiple QJSEngine instances at the same time.

Qt Quick Module

  • Added support for all subclasses of QQuickWindow by the inspector service, which makes Qt Creator's inspection feature useful.

Qt WebEngine Module

  • Upgraded to Chromium 49 release.
  • Added support for drag and drop, and printing to PDF.
  • Added tab notification for audio being played.
  • Added support for playing DRM-protected HTML5 video using Widevine Pepper plugin.
  • Added API for evaluating JavaScript or installing QWebchannel in secure and isolated JavaScript worlds.
  • Improved support for custom context menus.

Qt Widgets Module

  • Enabled QTabBar to delegate placement of tab scroll buttons to the style.
  • Enabled Qt Style Sheets to optionally let widgets inherit font and palette from their parents.

Removed Functionality

  • Qt Enginio

Deprecated Functionality

  • Qt Script

Deprecated modules are still included in Qt 5.7, but are considered for removal in future releases.

List of API Changes

The pages below contain a list of API changes in Qt 5.7:

Additions to Other Qt 5 Releases