What's New in Qt 5.15

New Features in Qt 5.15

Qt 3D Module

  • Improved profiling and troubleshooting support.
  • QSortPolicy: introduced a uniform mode to control whether uniform minification needs to be performed or not.
  • QMouseDevice: introduced a updateAxesContinuously property.
  • Isolated the OpenGL renderer as a plugin.

Qt Core Module

  • Introduced QFile::moveToTrash() to provide a cross-platform API for moving files to the trash/recycling bin on Windows, macOS, and Linux desktops. This implements the freedesktop.org specification.
  • Introduced QFileInfo::isJunction() to detect whether a file system entry is a Windows NTFS junction.
  • QRunnable instances can now be created from std::function without having to subclass QRunnable.
  • QThreadPool::start() and tryStart() can now take std::function and thereby also anonymous lambda functions as arguments.
  • Added static template QDebug::toString() function, which streams the given object into a QDebug instance that operates on a string, and then returns that string. This is useful for cases where you need the textual representation of an object for debugging, but cannot use operator<<, such as when passing a failure message to QVERIFY2().

Qt GUI Module

  • QColorSpace setters can now operate on invalid color spaces, making it possible to set primaries and transfer function independently.
  • Implemented multi-threading support for many QImage scaling and conversion methods.

Qt Multimedia Module

  • Deprecated all plugin APIs.
  • Deprecated QMediaService and QMediaControl.
  • Introduced reverse playback for GStreamer.
  • Introduced rendering to multiple surfaces.
  • Introduced QVideoWidget::videoSurface(), QGraphicsVideoItem::videoSurface(), and QDeclarativeVideoOutput::videoSurface().
  • MediaPlayer QML type: Introduced a videoOutput property.
  • Introduced QVideoFrame::image().
  • GStreamer camerabin: React to changes in notify::zoom and notify::max-zoom properties.

Qt Network Module

  • OpenSSL backend: Added support for a new session ticket mechanism introduced by the TLS 1.3 protocol.
  • Implemented timeouts for downloads and uploads with QNetworkRequest and QNetworkAccessManager.
  • Increased the minimum supported version of OpenSSL to 1.1.

Qt QML Module

  • Introduced inline components; multiple QML components can be declared in the same file.
  • Introduced required properties.
  • Added a declarative way of registering types to QML.
  • qmllint now has a better understanding of the code and warns about deprecated QML features.
  • Added the qmlformat tool to automatically format any QML file according to the QML Coding Conventions.
  • Added support for the Nullish Coalescing Operator.
  • Added a colorspace property on image nodes, making it possible to read color spaces and transform images into a specific color space.

Qt Quick Module

  • Added a PathText type which can be used together with Qt Quick Shapes to render text as geometry, without relying on distance fields or pre-rendered textures. This is useful for rendering large font sizes which would otherwise consume a lot of texture memory.
  • Added a Image.sourceClipRect property to request the image plugin to render a portion of an image source.
  • Added a cursorShape property to pointer handlers. Most pointer handlers (for example DragHandler) will change the cursor when in active state. HoverHandler will change the cursor when the mouse is hovering over the Item that contains the handler.
  • Added support for Metal on iOS for the opt-in preview of the Graphics API Independent Rendering Architecture.

Qt Quick Controls Module

Qt WebEngine Module

  • Updated to Chromium 80.
  • Switched to use a sandboxed network service.
  • Introduced a new API for reading the subprocess ID of a page or a view.
  • Introduced a WebEngineHistory.clear() method.

Tools

  • QDoc can now generate DocBook.
  • QDoc now generates output for C++ class and function template parameters.
  • QDoc now generates correct output for scoped enums (enum classes).

Platform Changes

Android

  • Introduced the use of Android's native file dialog by default for open (file, multiple files, directory) and save operations.

Wayland

  • Introduced experimental support for Vulkan on the client side.

Embedded Linux (eglfs)

  • eglfs_viv backend: Added support for Vulkan, via VK_KHR_display, on NXP i.MX8 based devices.

New Modules

Qt Quick 3D

  • Introduced post-processing effects.
  • Introduced a custom geometry API (C++ meshes).
  • Introduced Quaternions API for Node rotations.
  • Switched to use a right-handed coordinate system (previously right or left).
  • Improved support for Qt Quick 2D in 3D scenes.
  • Added support for spot lights.
  • Performance improvements.

Qt Lottie

  • Introduced a Bodymovin JSON renderer for Adobe After Effects animations.
  • Performance and stability improvements.

Qt PDF

  • Based on a version of Pdfium that is shared with Qt WebEngine.
  • Available on the same platforms as Qt WebEngine, and also on iOS.

Deprecated Modules

To help preparing for the transition to Qt 6, numerous classes and member functions that will be removed from Qt 6.0 have been marked as deprecated in the Qt 5.15 release. Unless you define QT_NO_DEPRECATED_WARNINGS in your project, you will get compiler warnings for code that uses any deprecated APIs. Those warnings will explain which API to use instead. To disable any deprecated APIs completely, use the QT_DISABLE_DEPRECATED_BEFORE macro.

The following modules are part of Qt 5.15 release, but are deprecated and considered for removal in subsequent releases of Qt:

  • Qt Script
  • Qt Quick Controls 1
  • Qt XML Patterns

List of API Changes

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

Additions to Other Qt 5 Releases