Lars Knoll

Qt 5.10 released

Published Thursday December 7th, 2017
39 Comments on Qt 5.10 released
Posted in Biz Circuit & Dev Loop, Qt, Releases | Tags: , , , ,

I’m happy to let you all know that Qt 5.10 has just been released. Qt 5.10 comes with a ton of new functionalities that I’m thrilled to talk to you about.

Before we dive into all the great new features of Qt 5.10, I want to talk to you about another exciting new addition to Qt being released today.

Qt 3D Studio

As the name suggests, Qt 3D Studio is a graphical editor used to create of 3D user interfaces and is derived from the NVIDIA Drive Design product that NVIDIA contributed to Qt earlier this year.

Qt 3D Studio consists of both a runtime component that is run in your application and a graphical design tool to design and create the UI. While the tool is a standalone application, the runtime can easily be integrated with the rest of Qt.

Qt 3D Studio will work with both Qt 5.9 and 5.10. The runtime and the 3D Studio application are both available under commercial and GPL licensing. For more details, please have a look at the separate blog post about it.


Qt Qml, Qt Quick, and Qt Quick Controls

A lot of exciting new things have happened in this area. Qt Quick has now gained a plugin that allows placing arbitrarily shaped items into the scene. Have a look at the blog post and documentation for more details.


The new pointer handlers are the next big new feature in Qt Quick. This is a large step forward for Qt Quick that significantly improves how to handle many more complex multi-touch use cases. Instead of using Mouse- and TouchArea to handle those input events, you can now attach handlers for different types of pointer events to any item. Support for this is still in technology preview. Please have a look at the blog post and documentation for all the details.

On top of that, Qt Quick gained a larger amount of smaller enhancements. Chief among them the support to directly load ETC1 and ETC2 compressed textures, multisampling support for layers and some properties to tune font handling.

Qt Quick Controls 2 has also received many new functionalities. First of all, there are now two new styles available. One is an image-based style that makes it very easy to use your own artwork to create a custom look and feel. The other one, called Fusion style, gives a platform agnostic, desktop-oriented look and feel. Those styles also support propagating palettes.

Left: Imagine style - Right: Fusion style

Left: Imagine style – Right: Fusion style

We’ve also added Action, ActionGroup and MenuBar items. Outside of MenuBar, Actions are also supported in buttons, delegates, and menus. In addition, we added numerous smaller features to existing controls.

Qt Qml finally supports declaring enums in QML and dynamically retranslates all strings on language changes.


A massive new feature in the graphics area is a new QPA plugin that allows streaming a full Qt User Interface to any WebGL enabled browser. You can find details in this blog post.

On the OpenGL side, QSurfaceFormat can now be used to request sRGB-compatible framebuffers, and the full set of the OpenGL ES 3.2 API is now available across platforms through QOpenGLExtraFunctions.

Qt 3D

Thanks to our friends at KDAB, Qt 3D has also gained a couple of new features. There are new node types that can be used in frame graphs, such as a proximity filter and a framebuffer blit. We now have support for Shader graphs that enable the creation of shaders from a graph based description, a technology preview of a skeletal animation system and a Scene2D Qt Quick element, which simplifies embedding Qt 3D content in a Qt Quick Scene.

Apart from that, the focus on Qt 3D development is now slowly shifting from developing all the required features to improving performance and memory consumption. Some of the results of that effort can be seen in the following blog post.

Qt 3D will also become much more important for Qt moving forward. We are currently working on basing the runtime for Qt 3D Studio on top of Qt 3D in order to unify the architecture for all our 3D related APIs and tools.

Qt Core and Network

Qt Core now has a brand new QStringView class, that is conceptually similar to std::string_view. For the moment, it’s still missing some const functions from QString, but that will get finalized for Qt 5.11.

Qt Core also received a new QRandomGenerator class that provides a high-quality random generator and access to seedless random numbers generated with hardware or operating system facilities. There’s now also a set of explicit big/little endian data types (qint16_le, etc), and a KeyValueIterator for our associative containers that provide STL compatible iteration semantics over those containers.

Qt Network now supports OpenSSL 1.1, stores HSTS (HTTP Strict Transport Security) policies in a persistent way in QNetworkAccessManager and has implemented the h2c protocol upgrade used by non-SSL HTTP/2.

Qt Widgets

We have added a couple of smaller features, such as QWidget::createWindowContainer() on Android, enabling QOpenGLWidget for rendering and grabbing offscreen content, adding a tabStopDistance property in QTextOption and QTextEdit and an API for better selection handling to QLineEdit. QDockWidgets can now be dropped side by side.

Additionally, a large set of bugs have been fixed in this module for Qt 5.10.

Embedded functionality

While most of the items above improve our overall offering, both for application development and device creation, we also have some items that focus on the embedded side.

The Qt Virtual Keyboard has gained support for many new languages and handwriting support for Arabic, Farsi, Chinese, Japanese and Korean.

A brand-new version of the device emulator is coming with Qt 5.10. It now supports multiple screens, multitouch and has received support for plugins. Have a look at the separate blog post for details.

On the Boot2Qt side, we updated our device images to Yocto 2.3 (Pyro), giving you a more up-to-date Linux to base your work upon.

Qt for Automation, containing the KNX and MQTT modules, is now also available in Qt 5.10.

Other modules

We updated Qt WebEngine to use Chromium 61. You can now pause and resume downloads and start them programmatically.

On Windows desktop, you can now use the UWP backend for Qt Bluetooth on Windows, and on X11, the Qt X11Extras module now allows peeking into the event queue.

Finally, Qt Network Authorization (providing support for OAuth 1 & 2) and the text-to-speech support in Qt Speech graduated from technology preview to being fully supported in 5.10.

For more details, have a look at the new features page on the wiki, our dedicated Qt 5.10 web page and our change logs for each Qt module.

I hope you will enjoy the release, and I’d like to thank everybody who has contributed to making it happen. As always, you can get this release from your Qt Account page or our download section on the web.

Do you like this? Share it
Share on LinkedInGoogle+Share on FacebookTweet about this on Twitter

Posted in Biz Circuit & Dev Loop, Qt, Releases | Tags: , , , ,


Eli says:

Kudos as allwas! Two questions:

1. “Qt Qml finally supports declaring enums in QML”. Does this mean QML Enums will finally have a seperate namespace? Having c++ class enums in qml was allways painful because of namespace collisions….
2. The 5.11 wiki mentions supporting 64bit mingw. Does this mean we will see official support for greate projects like msys2? That would be awsome!

Thanks for another greate release 🙂

Jani Heikkinen Jani Heikkinen says:

>2. The 5.11 wiki mentions supporting 64bit mingw.
From where you found this? We haven’t yet agreed supported platforms or configurations for Qt 5.11. We have discussed earlier if we can switch from 32 bit mingw to 64 bit one. But as I wrote nothing has agreed yet

Jakub Narolewski says:

“MinGW is upgraded to a x64 version”

Eli says:

Can you guys consider using something like msys2? It works __really__ greate because of all the other package provided by the project! This project is a tremendous time saviour!


lainwir3d says:


“On Windows desktop, you can now use the UWP backend for Qt Bluetooth on Windows, and on X11, the Qt X11Extras module now allows peeking into the event queue.”

Wasn’t this already the case? Just pushed a submission for certification to the windows store that use Qt Bluetooth 5.9.3 and it seems to work fine (at least on my Windows Desktop).

Cheers anyway!

Marco Piccolino Marco Piccolino says:

Same here, I used the UWP Bluetooth backend on 5.9.
Anyways, feature-wise it’s an amazing release!

stlcours says:

Congratulation! But could you tell me “OpenSSL 1.1 back-end.” means what?
Before 5.10, there are three case of openssl for Qt: no-ssl, dynamic-ssl, static-ssl. Now it has no more the case “no-ssl”?

Allan Allan says:

OpenSSL 1.0 and 1.1 are unfortunately neither binary nor source compatible (in classic versioning 1.1 should have been called 2.0). All the previous Qt OpenSSL options depended on OpenSSL 1.0. We can now also use the OpenSSL 1.1 API. Though since they are not binary compatible, you need the same version at runtime if you use runtime linking.

Pavel says:

Really need the debugger for QJSEngine…((

justin says:

Font rendering on the “Fusion style” screenshot looks totally broken.

HGH says:

Installing just the VS2017 binaries + sources on SSD took on Windows 10 hours. The download didn’t take that long but after that the process took forever. Is “copying” files on WIndows that slow?

Aurélien says:

Try to disable antivirus and Windows defender. It should speed the process up a lot.

Maxime says:

Any way we can get QtWebEngine built with proprietary codecs by default?
Then we could just drop the plugins in our app without having to rebuilt from source every time..
If you guys don’t ship the plugins/codecs, I don’t see why this would be a problem.
It is really tedious to do compared to other frameworks (electron, ..)


Allan Allan says:

The codecs are decoded by ffmpeg which in the default configuration are bundled inside Chromium/QtWebEngineCore. So we would be distributing the codecs if the option is enabled, even when using the system-ffmpeg option on Linux, MPEG-4 demuxing is still done by Chromium inside QtWebEngineCore . This is the same for Electron and other projects based on Chromium.

As far as I know the codecs are free to use for decoding, but I am not an expert on that issue and it is a legal mine-field which we have decided to stear clear of so far, but other projects may make different calls, and we provide the configure time options for our users to make their own call on whether they can use the proprietary codecs or not.

Peppa says:

>Qt Widgets
>Additionally, a large set of bugs have been fixed in this module for Qt 5.10
>For more details, have a look at … our ChangeLog …

No link is given for the 5.10 ChangeLog that I can see. Please post it. Thanks.

Erika says:

Looks like some exciting features! I notice there’s a “new QPA plugin that allows streaming a full Qt User Interface to any WebGL enabled browser” however the linked blog post refers to Qt Quick applications, and not QWidget apps. Can you confirm QWidget-based applications are not supported by this plugin?

Jesús Fernández Jesús Fernández says:

Unfortunately no QWidget based applications 🙁

Erika says:

Thanks Jesús for letting me know! Qt Quick controls still don’t quite include all our UI needs – though it is expanding. I’ll keep watching for updates.

Alexander R. says:

Does WebGL streaming support custom OpenGL ES items? I got a render thread violation error when trying WebGL rendering with this item in the scene.

Jesús Fernández Jesús Fernández says:

It’s supported, check openglunderqml example.

Laszlo Agocs Laszlo Agocs says:

Just to check: your custom OpenGL code routes its calls through QOpenGLFunctions, right? If not, it won’t work since the calls will not be captured by the platform plugin.

Stanislav says:

Why you don’t provide modularize source code pacakges in Online Installer ? I don’t use webengine, and i don’t want sorce code for this

daniel says:

So can you finally turn off blinking of cursor? It was possible in qt3 and qt4, but not in qt5!

Nick says:

Congratulation on the release.

Question though: was QRandomGenerator really necessary, given that has been available now since C++11?

ulf says:

So, where do I find the MQTT stuff?

Jani Heikkinen Jani Heikkinen says:

QtMQTT as well as QtKNX is part of Qt Automation, not part of standard Qt 5.10

RP says:

When can we have it in standard release?

carl says:

Hi. Congratulations for the new release.
I have one question regarding Qt widgets. It seems to receive less support.
Are you going to continue support it on the long run? or you may decide to deprecate it in few years?
One more question, Will you support a ribbon for Qt widgets or any other Qt User Interface?
I know about other implementations available, but some are not usable and other are very expensive.
I know also some devs see it bad UX, However i read many researches, heard many users about how ribbon is useful in certain types of applications. LibreOffice announcement of ribbon-like UI aka MUFFIN Interface made it quite better known and increased its usability, popularity and donations . Even wxWidgets got it.
So, Any plans or thoughts about it?
Thank you.

Roman Shchekin says:

How can I declare enum in QML? Is there any example or article in documentation?

Michael Brasser says:

There are very basic docs at: Not mentioned is that assigning simple values is supported (Value = 1), while negative values (Value1 = -1) and assignment of other values (Value2 = Value1) are not yet supported.

Malek Khlif says:

Great news 😀 How we can use enum in QML ?

VilleL says:

Hi. Nice work, as usually.

What would be the right way to get hardware accelerated video to be played in qml MediaPlayer+VideoOutput combo? Or in any qml video? Nothing special hardware, just some Intel graphics, like Nuc has.


taoshu says:

Hi, Nice work, as usually.
When apply “NSWindowStyleMaskFullSizeContentView” style in Mac OS, the window that has a “QWebEngineView” will show abnormally. The size and layout of all widget are correct, but the content drawn in window is scaled when drag the window from one moitor from to other.

The window that not include “QWebEngineView” is all right.

Please help me, because the problem is so strange, and if apply “NSWindowStyleMaskFullSizeContentView” in Qt demo that has a “QWebEngineView” will also encounter this problem.

Here is my code:
CustomTitleBarMac::CustomTitleBarMac(QWidget* window)
: m_wnd(window)
if (nil == window) {

NSView* nsView = (NSView*)window->winId();
if (nil == nsView) {

NSWindow* nsWindow = [nsView window];
if (nil == nsWindow) {

nsWindow.titleVisibility = NSWindowTitleHidden;
nsWindow.titlebarAppearsTransparent = YES;
nsWindow.styleMask = (nsWindow.styleMask | NSWindowStyleMaskFullSizeContentView);

luca says:

The MediaPlayer not work inside android. have some solution?

Witek says:

What is “QDockWidgets can now be dropped side by side” and how can I enable it?

Commenting closed.

Get started today with Qt Download now