Lars Knoll

Qt 5.13 Released!

Published Wednesday June 19th, 2019
50 Comments on Qt 5.13 Released!
Posted in Biz Circuit & Dev Loop, Qt 5.13, Qt Quick, Qt Quick Controls, Qt WebEngine, QtCreator, UI | Tags: , , , , , ,

Today, we have released Qt 5.13 and I’m really proud of all the work that everyone has put into it. As always, our releases come with new features, updates, bug fixes, and improvements. For Qt 5.13, we have also been focused on our tooling that makes designing, developing and deploying software with Qt more efficient for designers and developers alike. Let’s take a look at some of the highlights of Qt 5.13 as well as some of the updates on the tooling side.

I will also be holding a webinar summarizing all the news around Qt 5.13 together with our Head of R&D Tuukka Turunen on July 2. Please sign up and ask us your questions.

New in Qt 5.13 & Qt Design and Development Tools Update - Jul 2, 2019

Qt for WebAssembly

Qt for WebAssembly lets you build Qt applications for web browsers and is now fully supported. Qt for WebAssembly uses Emscripten to compile Qt applications for a web server allowing you to run native applications in any browser that supports WebAssembly without requiring a client-side installation. Qt is setting the pace for C++ development for WebAssembly and Google recently used Qt as an example of how to run C++ applications in the browser at the Google I/O ’19 event. You can take a look at the video.

We have also collected a range of examples for Qt for WebAssembly. Check out them out here.

Qt GUI

Qt GUI summarises our classes for windowing system integration, event handling, OpenGL and Open GLES integration, 2D graphics, basic imaging, fonts, and text.

Qt QML

The Qt QML module provides a framework for developing fluid user interfaces in the QML language. We have improved the support for enums declared in C++, JavaScript “null” as binding value is now optimized at compile time, and QML now generates function tables on 64bit windows, which makes it possible to unwind the stack through JITed functions.

Qt Quick and Qt Quick Controls 2

The standard library for writing QML applications and our UI controls for creating user interfaces have also received some updates. We have added support to TableView for hiding rows and columns and for Qt Quick Controls 2 we have added SplitView, a control that lays out items horizontally or vertically with a draggable splitter between each item. We have also added a cache property to icon.

Qt WebEngine

Qt WebEngine integrates Chromium’s fast-moving web capabilities into Qt and its latest version is now based on Chromium 73. We have added PDF viewing via an internal Chromium extension, application-local client certificate store, client certificate support from QML, Web Notifications API and a thread-safe and page-specific URL request interceptors.

Qt Network

Qt Network provides a set of APIs for programming applications that use TCP/IP and we have added Secure Channel support for SSL socket and OCSP stapling support. With Qt 5.13 are now using OpenSSL 1.1 to support SSL connections on Linux and Android.

Qt Multimedia

Provides a rich set of QML types and C++ classes to handle multimedia content. We have also added gapless playback in QML VideoOutput using flushMode property, support of GStreamer for Windows/macOS and HTTP headers and audio roles for Android.

Qt KNX

The client side of a client – KNXnet/IP server connection. This connection can be used to send messages to the KNX bus and to control the functionalities of the KNX devices typically used in building automation. With Qt 5.13, the module has received a secure client API.

Qt OPC UA

The next generation of Industry 4.0 applications based on a Client / Server architecture has received some updates. Mainly, the C++ API is now fully supported and we added tech previews of a QML API and a secure client C++ API.

Qt CoAP (Tech Preview)

Qt CoAP (Constrained Application Protocol) is a client-side implementation of the M2M protocol for use with constrained nodes and networks for the internet of things. With Qt 5.13, the module has received support for Datagram TLS (DTLS) over UDP.

Other Recent updates

Qt Creator IDE 4.9

Qt Creator IDE has received some updates, which include an improved UI for diagnostics from the Clang analyzer tools, a QML parser update, support for ECMAScript 7 and a new performance profiling plugin for software running on Linux. You can read more about the updates to Qt Creator in the dedicated release post.

Qt Design Studio 1.2

The latest edition of the Qt UI design and development tool now lets you seamlessly import your designs from Sketch (in addition to Photoshop) and turn them into QML code. Adding support for Sketch has been a sought-after request and is a popular tool for designers so this is really taking Design Studio to the next level, enabling a much smoother designer-developer workflow. In addition, support for more complex gradients from Qt Quick Shapes have been added, and various improvements and fixes have been made. We have also released a Qt Design Studio Community Edition. You can read more about it in the release blog post.

Qt for Python

Qt for Python has received a large number of bug fixes and improvements since its first officially supported version that came with Qt 5.12.

New Version of Qt Safe Renderer

TÜV NORD certifies that you can use Qt to build functionally safe embedded systems. The QSR 1.1 is certified based on the new edition of ISO 26262:2018 series of standards and includes Qt Safe Renderer Code, Designer and Build Tooling, ac safety manual, certification artifacts, and global Qt technical support. Our recent update allows you to render UI elements dynamically.

Qt Lottie Animation Tech Preview

Engineers and UI designers can now easily embed Adobe After Effect animations directly into Qt Quick applications using the Bodymovin export format and the new Qt Lottie renderer for it. For more details have a look at the blog post about it QtLottie.

Thanks to the Qt Community

Qt 5.13 adds new functionality and improvements. Some of them would not have been possible without the help of the great community who contributes to Qt with new functionalities, documentation, examples, as well as bug fixes and reports. There are too many people to mention, but I’d like to especially thank basysKom and Witekio for their work on Qt OPC UA and QtCoAP, respectively.

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

Posted in Biz Circuit & Dev Loop, Qt 5.13, Qt Quick, Qt Quick Controls, Qt WebEngine, QtCreator, UI | Tags: , , , , , ,

50 comments

Liviu Lalescu says:

Thank you! Unfortunately, it seems that the Windows version (I am using and installing MinGW-64-bit) has the old SSL 1.0 dll’s, and I cannot use network fetch of a file by https in my application.

Akseli Salovaara says:

For me QSslSocket::sslLibraryBuildVersionString() returns correct OpenSSL version info with MinGW 64-bit Qt binaries. Are you certain that there is no other OpenSSL library instance in PATH interfering your application?

Liviu Lalescu says:

Thank you for the reply! I was installing from the offline package. I tried installing from the online archive, it has OpenSSL 1.1.1c, but my program still complains it cannot load SSL libraries, even if I copied crypto and ssl dll’s near the executable.

Edward Leaver says:

I’m not certain “I copied crypto and ssl dll’s near the executable” answers Akseli’s PATH question. In Linux/Unix land there are several ways for ld — the executable and library loader (aka runtime linker) — to find the shared (.so or .dll) libraries needed by an executable. The modern, preferred way is to compile the preferred library paths directly into the executable (or other libraries) using the -Wl,-rpath= compiler directive, which is undoubtedly what Qt does so usually one wouldn’t have to worry about it. Usually. But you can always override the the -rpath directive with your LD_LIBRARY_PATH environment variable, which may be set any time by any user shell script. Several things you can do:

1. Make sure your MinGW is up-to-date. Qt’s OpenSSL might need system libraries with versions ld can’t find.

2. From the same MinGW command-line terminal/window from which you are trying to load your executable, type “printenv LD_LIBRARY_PATH”. That will print a colon separated list of every path the ld runtime linker should search for a library before looking for the right path compiled into the program.

You can try just opening a fresh terminal/window and running from there. Often during development you inadvertently add unneeded paths to LD_LIBRARY_PATH.

3. ldd is the “ld debugger”. ldd is your friend. From the same aforementioned terminal/window, type “ldd “, where is the name or path to your executable. ldd will print a detailed list of every library it tries to load, whether or not the library was found, and the path to the library if it was. Look for any “not found” libraries and OpenSSL libraries in the list. Check if any of their directory paths are to an old version of OpenSSL and are in LD_LIBRARY_PATH. If they are get rid of them.

Frequently but not always, a fresh program will not need LD_LIBRARY_PATH at all, You can check by, from the same aforementioned terminal/window, erasing it by typing “setenv LD_LIBRARY_PATH=” — with nothing after the “=” sign.

You can get back your default LD_LIBRARY_PATH by opening a fresh terminal/window. As previously noted, that should be the first thing to try.

Edward Leaver says:

Edit: Should read “ldd programname”, where programname is the path or name of your executable program.

Liviu Lalescu says:

Thank you for the very detailed answer! Unfortunately, it did not apply to my problem, but I compiled Qt from the sources with “configure.bat -schannel …” and it seems to work, at least on my Windows 10 with MinGW. And I don’t need to add the OpenSSL dll’s, which is even better.

Eli says:

Nice update as always!

Can you elaborate on “support of GStreamer for Windows/macOS”. What do I have to do to support GStreamer in my Windows app? Copy some GStreamer DLLS or recompile Qt itself? Can I accelerate my webcam video decoding via GStreamer?

Cheers

Val says:

Hi, using GStreamer on Window is a bit challenging task.
1. First need to download gstreamer package for Windows. Install it to e.g. C:\gstreamer\
2. Set env vars to find gst within configuring:
SET GST=C:\gstreamer\1.0\x86
SET PATH=%GST%\bin;%PATH%
SET GST_PLUGIN_PATH=%GST%\lib
SET INCLUDE=%GST%\include;%INCLUDE%
SET INCLUDE=%GST%\include\gstreamer-1.0;%INCLUDE%
SET INCLUDE=%GST%\include\glib-2.0;%INCLUDE%
SET INCLUDE=%GST%\lib\glib-2.0\include;%INCLUDE%
SET LIB=%GST%\lib;%LIB%
3. Reconfigure qt and see that GStreamer is available
Checking for GStreamer 1.0… yes

To debug, .qmake.stash should contain path to gst as well, after configuring.

4. After building of the QtMM , there will be plugins/mediaservice/gstmediaplayer.lib
5. To use this plugin, need to set QT_MULTIMEDIA_PREFERRED_PLUGINS=gst before run the app.

Eli says:

Thanks for the quick reply!
“3. Reconfigure qt and see that GStreamer is available” so I do not to compile Qt myself?
“SET GST=C:\gstreamer\1.0\x86” Does this mean only 1.0 or only GStreamer > 1.0 aka the current 1.16 are supportet?

Eli says:

*so I guess I have to compile Qt myself? [You cannot edit your posts :(]

Val says:

You have to recompile QtMM to build its gst* plugins. These qt plugins are not distributed yet with qt package.

Val says:

>aka the current 1.16 are supportet?
it will be in 1.0 dir anyway. But does not metter, use dir to point where gst is installed.

Denis says:

AFAIK, the ‘standard’ GStreamer distributed package for a Windows does not provide an accelerated plugins . You should to download its sources (e.g. for Intel, NVidia, and AMD video-cards) and to build himself.

IMHO, I don’t see any adwantages of GStreamer for Windows at all. A best shoose still it to use the DirectX/WMF plugins.

Val says:

> Can I accelerate my webcam video decoding via GStreamer?
Forgot to say, potentially yes, but still have some doubts, since gst support for Win is not quite stable yet, IMHO.
Acceleration would depend on plugins you choose to install.

Thorbjørn Lindeijer says:

The description of what’s new in Qt GUI was filled with the changes from Qt Network in both the blog and https://www.qt.io/qt5-13.

Alexander says:

>>> Can you elaborate on “support of GStreamer for Windows/macOS”

+1.

Also, does it mean it is possible to use GStreamer or even ffmpeg filters for video/audio?

Val says:

>Also, does it mean it is possible to use GStreamer or even ffmpeg filters for video/audio?
It would depend on what gst plugins are installed, as usual.

Eddy says:

No MSVC2019 packages?

JKSH says:

You can use the MSVC 2017 packages with your MSVC 2019 compiler.

Fabio says:

Hi, I am really excited to try Qt for Webassembly.

Is there any pre-compiled binaries or do I need to build them from Qt Source?

There is any step by step to build a “hello word” application?

Eskil Abrahamsen Blomfeldt Eskil Abrahamsen Blomfeldt says:

There are prebuilt binaries for Linux hosts, but you can also build the source packages on other host systems. We will add binaries for Windows in macOS in upcoming releases.

Here are some instructions on getting started:

https://doc.qt.io/qt-5/wasm.html

Running applications is only possible from the command line at the moment, but integration with Qt Creator is also coming soon.

Morty says:

No MSVC 2019? That is disappointing.

JKSH says:

You can use the MSVC 2017 packages with your MSVC 2019 compiler.

Michal Lazo says:

some quick test of Qt for WebAssembly
TextEdit demo in Chrome 75 on windows 10
select some text and then right click show qt copy/paste menu and also show chrome menu Save Image/Copy Image

From my wish list:
Are there any request for webassembly api to add API for OS fonts
run-time support for both OpenSSL 1.0 and 1.1
run-time support(with switch) for both OpenGL/OpenGL ES/Angle in QML/Quick/Qt3D

Good work

Roberto Peribáñez Iglesias says:

From Qt for WebAssembly wiki : Qt 5.13 is planned to have Qt for WebAssembly as a supported platform.

As i know, it is not available as option on Qt Maintenance Tool.

Martin says:

Webassembly for opensource QT ??

I was hopeing for a more streamlined installation but anyway,

– Have installed emscripten 1.38.30, no problem
– Documentation then says
“The binary builds can be downloaded in the Downloads section using your Qt account.”

Are we supposed to build it ourself (for opensource) ??

Eskil Abrahamsen Blomfeldt Eskil Abrahamsen Blomfeldt says:

If you are on a Linux host, the WebAssembly binaries should be available in the installer. Unfortunately, in the current version there are no prebuilt binaries for Windows or macOS hosts. This is coming in the near future, but on those host platforms you currently have to build Qt from source.

hg says:

Can’t find anything named WebAssembly using the Linux Qt5.13.0 installer

The offline installer only contains selected builds. You have to use the online installer to get Qt for other platforms, such as WebAssembly. I checked now, and it is listed under 5.13.0 in the online installer. If this does not work for you, try reporting a bug for it in https://bugreports.qt.io

Jacek says:

I agree, Qt WASM Getting Started doc is slightly confusing, there’s no mention of the platform the binaries are ready to be downloaded for nor how exactly it is done.

zahraee says:

Can we test QT SafeRenderer in Community Edition?

@zahraee: No, Qt Safe Renderer is only available under a commercial license.

Nils Christian says:

Congratulations on what looks like a great release!

Vladimir says:

Qt, You’re Breathtaking!
Glad to see new proxy models!
Thank!

Ionut Dediu says:

What about an official TreeView control? The default style for desktop QML controls (which is what one would use for desktop web devel ) is awful: the default font is ugly as hell, the buttons have the most horrific gray color, I couldn’t easily implement a hover state for buttons (maybe it’s possible, it just isn’t out of the box). The desktop tab control again looks hideous without that bottom edge that clearly shows which tab is active and with no easy way to add a close (x) btn to the tabs. There is no way to speciy a minimum size of a scrollbar which can get ridiculous small for a list of thousands of entries.

The horrible state of the desktop QML controls shows the focus was for touchscreens which is excusable. HOWEVER, with webassembly there is a golden opportunity for Qt/QML to REALLY take off. I absolutely hate the current state of web development, with the gazzillion of spineless javascript frameworks, the needless and out of control customization of customization: saas over css, the total mess of dom and layouts. The only way to make some sense of the can of worms is to go with the inspector in the browser’s dev console and debug the myriad of styles and ids and classes and attributes. IT’S MADNESS!!!! So QML and webassembly for the rescue. But please Digia get your act together. For forever Qt/QML seemed like a work in progress, never quite finished. PLEASE make it work, hire some decent graphic designers to clean up the desktop and unleash QML on the web !!!

Soheil says:

I’m totally agree with you about current web state. Wasm + Qml will change it at least for Qt/C++ developers.
To be honest, aftrer 15 years of using Qt as my main development framework, I have to say, you need to look at Qt Quick Controls 2 as a base implementation + some useful controls. You need to make everything from scratch. Why? Because expanding controls has no end. A framework like Qt, will be always like a work in progress because I don’t think that it will come to an end anytime soon.
And IMHO, Qt is a masterpiece, it’s the best well-structed piece of software I have ever seen. It amazingly fast, handy and easy to learn.

Ionut Dediu says:

“Qt is a masterpiece” I totally agree !!!

Terenty says:

Not sure if I understand correctly, but does not running QML on WebAssembly require downloading all related Qt modules to your browser from a webserver just to show ui made with QML? If so there’s no way QML is alrenative to DOM. They need to reimplement whole QML system specifically for WebAssembly to make it viable and thats a lot of work

klaus says:

Thanks for the info about the missing TreeView control.

Just thought if I should give Qt a try, now I can save my time for something else.

Klaus

Soheil says:

Yes. You should. Qt is for software developers, but not for puzzle solvers.

Mitch Mitch says:

Have you created bug reports for these issues? https://bugreports.qt.io

JB says:

Eagerly downloaded but the MySQL drivers are missing from the Windows version.
Both qsqlmysql.dll and qsqlmysqld.dll in the 32 and 64 bit \plugins\sqldrivers\ folders are missing.
Is this intentional?

Domino says:

Hi, is it possible to use the third libary(like vtk) with Qt for WebAssembly?

holo_pk says:

Hi.. Is Qt3D supported on WebAssembly ??

Lorn Potter Lorn Potter says:

Not at this point. Qt3D needs multithreading, and so far, that is still experimental in webassembly.

Maxime says:

What do you mean by “Improved the support for enums declared in C++”, what changed? What is improved?

Eli says:

What I observed is that since qt 5.13 when you forgot to register your enums you get this error message:

QObject::connect: Cannot queue arguments of type ‘MyFancyEnum’
“(Make sure ‘MyFancyEnum’ is registered using qRegisterMetaType().)”

Maxime says:

If you use Q_ENUM, you don’t need to use qRegisterMetaType()

Yacine BENAFFANE says:

Goood job !!

Wolfgang says:

Thanks for the glorious update!
However, I am still missing a decent TableView for QtQuick Controls 2. The current offering is just a core part of something wonderful to come. When are you planning to give us the rest of a complete TableView?

Commenting closed.

Get started today with Qt Download now