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