What's New in Qt 5.7 | Qt 5.12

- Qt 5.12
- What's New in Qt 5.7
- Qt 5.12.8 Reference Documentation

# 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:

- New Classes and Functions in Qt 5.7
- Obsolete Classes

## Additions to Other Qt 5 Releases

- What's New in Qt 5.6
- What's New in Qt 5.5
- What's New in Qt 5.4
- What's New in Qt 5.3
- What's New in Qt 5.2
- What's New in Qt 5.1
- What's New in Qt 5.0