Lars Knoll

Qt 5.12 LTS Released

Published Thursday December 6th, 2018
55 Comments on Qt 5.12 LTS Released
Posted in Announcements, Biz Circuit & Dev Loop, Community, Contributors, Customers

Just in time for the end of the year, we have released Qt 5.12 LTS today. This is a long-term-supported (LTS) release that we will support for 3 years to come. We have had a strong focus on quality and fixed more than 2000 bugs since the last Qt LTS version, Qt 5.9.7 – make that over 5000 bugfixes since Qt 5.6.3. Of course, this is only the start, and we will work hard on continuously improving the quality of Qt 5.12 in upcoming patches

Speaking about which, we have improved Qt’s performance and memory consumption, especially within the area of Qt 3D and the QML engine.

But like all major Qt releases, Qt 5.12 LTS also includes a lot of new features. Let’s have a look at some of them.

New modules and platforms

I’m really happy to announce that we will now fully support Qt for Python, making all of the Qt APIs available to Python developers. The tech preview is currently available for you to test, while the official release will follow shortly after Qt 5.12. Qt for Python originates from the PySide project that we have been hosting on qt-project.org for many years. Qt for Python supports most of Qt’s C++ APIs and makes them accessible to Python programmers. In short: Python developers now can also create complex graphical applications and user interfaces. You can find more details in the Qt for Python blog posts.

Qt 5.12 contains the second Technology Preview for Qt for WebAssembly. With Qt for WebAssembly, you can compile a Qt application to run in any modern Web browser. Even though Qt for WebAssembly is still marked as a Technology Preview, it is pretty functional, and we’d like to encourage you to give it a spin and provide feedback. You can find more details about it here.

In addition to supporting two new platforms with Python and WebAssembly, Qt 5.12 also adds full support for two modules, that have been available as Technology Previews in earlier versions:

Qt Remote Objects makes IPC between Qt based processes seamless. It allows exposing the properties, signals and slots of a QObject to another process, independent of where that process runs.

Similarly, the Qt WebGL Streaming Plugin is now also fully supported. This plugin lets you stream the user interface of applications to any modern browser over the network.

Qt QML and Qt Quick

With the new release, we have done some major improvements to the JavaScript engine supporting QML. It has been upgraded from being compatible with ECMAScript 5 to now fully support ECMAScript 7. This enables modern JavaScript and simplifies the integration of Javascript libraries. ECMAScript modules are now also supported and can be loaded both from C++ as well as QML/JS.

We’ve now added a TableView as another type of Item View in Qt Quick. It’s a lot more performant than its previous QQC1 implementation and is filling the last major gaps in our set of Views. Various controls in Qt Quick Controls 2 gained new methods or new functionalities.

The Pointer Handlers of Qt 5.11 are now renamed to Input Handlers and are fully supported as a first-class feature in Qt Quick. The Input Handlers simplify the creation of complex touch interactions, that used to be difficult to do with MouseArea and TouchArea alone. Two new Input Handlers for hovering and dragging items have also been added.

Qt Quick now supports pre-generating distance field textures. Those textures contain the glyphs required to render text in Qt Quick, and pre-generating them at compile time helps improve application startup performance especially on lower end embedded devices.

Qt Core and Network

Qt Core has gained support for CBOR (Concise Binary Object Representation), a binary format that is similar to JSON, but that allows for a lot more data types and flexibility.

We improved QRegularExpression to support wildcard matches, to let us deprecate the old QRegExp class.

In Qt Network, we added DTLS over UDP support. On macOS and iOS, we now support ALPN and HTTP/2 through the TransportSecurity backend, and we added PKCS#8 support in the generic SSL backend.

Qt Gui and Widgets

On Windows, we are now supporting Windows UI Automation, allowing Qt-based UWP applications to operate with accessibility and programmatic UI control tools. We replaced the tablet/touchscreen/touchpad/mouse input with a unified implementation based on the Windows Pointer Input Messages on Windows 8 and newer. Hardware, like the screen digitizer in the MS Surface line, is now supported without special drivers.

We added lots of predefined gradients for QGradient based on https://webgradients.com/. QImage received support for an RGBA64 image format with 16 bits per color channel. These can be read from PNG- and TIFF-based files and can be uploaded to or grabbed from OpenGL.

Also, did I mention the oodles of bugs we exterminated for Qt Widgets?

Other items

The virtual keyboard now supports 13 additional keyboard layouts as well as MyScript handwriting recognition. It now comes with a public extension API that allows you to define your own layout.

Qt Location now contains an updated MapBox plugin and several minor API enhancements. We have upgraded Qt WebEngine to be based on Chromium 69 and to gain support for client certificates.

Qt for Automation has now updated versions of the KNX and MQTT modules supporting newer protocol versions, and we added support for OPC/UA as a Technology Preview.

What’s more, upcoming Qt 3D Studio 2.2 Studio release will be based on Qt 5.12 LTS.

Finally, Qt 5.12 does also come with a new version of Qt Creator. You can find out all about its new features from a separate blog post.

Thanks

I’d like to thank everybody who has contributed to making Qt 5.12 possible. Special thanks go to KDAB for consistently being the largest contributor to Qt (outside of the Qt Company), Thiago Macieira for his work on maintaining Qt Core and Christian Ehrlicher who has been contributing a huge amount of changes to this release.

So, go ahead – download Qt 5.12 from your Qt Account or qt.io/download.  And join the upcoming live webinar with Live Q&A with Tuukka Turunen and myself.

Join Webinar: Meet Qt 5.12 LTS  on 11 December at 6 p.m. CET

 

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

Posted in Announcements, Biz Circuit & Dev Loop, Community, Contributors, Customers

55 comments

Alex says:

Good job releasing new update with P1 crashes not fixed. Also love how my QTBUG-64890 listing a whole bunch of UI issues had not been acted on in over a year. UI bugs bot being fixed in a UI framework!

I used to be a huge Qt fan, proponent and advocate. Qt still is the easiest way to write a C++ application with GUI, even if you don’t need it to be cross-platform. But the lack of support for widgets makes me start to seriously consider the words of my colleague when he says Qt is declining and we need to write our own thin cross-platform wrapper over native APIs for MacOS and Windows.

Alex says:

P. S. Pardon my harsh tone. I’m merely upset by seeing Qt move in a direction I don’t understand, abandoning things that made Qt great and second-to-none.

Massimo says:

Big fan of Qt too, but I’m with Alex here. Qt3D alone has 49 P1 issues open, which makes me not even consider 5.12.0 as it is. Lately I noticed one step ahead and two steps behind at each release. Contributing and reporting bugs is also not fun. Most of them are simply ignored and left to rot for years.
Guys, please FIX things before adding new stuff. It is more important to have a stable and performant Qt rather than 100 modules and 1 million APIs.
Thanks.

Tuukka Turunen Tuukka Turunen says:

@massimo: Qt 5.12 provides multiple fixes over previous version. There will also be multiple patch releases coming with more fixes during the next three years. Our view is to release improvements regularly rather than wait all issues to be fixed before making a new release. Regressions are of highest priority to fix in order to ensure each new release is better than the previous one..

aamann says:

I also have reported multiple regressions as early as RC1 and nobody has even looked at them – 5.12 is unusable for us and we can’t use 5.11.3 either since it includes some bugs from the 5.12RC (which since have been fixed).

Drw says:

Exact same feeling here. In the Qt 3 and Qt 4 days we never had to patch a Qt version. Since Qt 5, there was not a single release of Qt we could use for software releases without painfully patching several bugs first and introducing ugly workarounds in our own code.

Most Qt 5.x versions (including 5.7.x, 5.8.x, 5.11.x and 5.12) were outright unusable for releases due to multiple severe problems 🙁 It pains me to say this since I too am at heart (still) a huge Qt fan…

@Drw: If you need to create a patch to fix the bug for your, why not also contributing the patch for other users?

Drw says:

These patches are all available in the Qt bug tracker but for newer versions. We basically have to backport fixes from newer Qt versions into older Qt versions which are less severely broken over all.

For example, newer Qt version have the performance problem QTBUG-71778 (5.11.x, 5.12), this makes them unusable for us and it cannot be easily fixed on our side. So we go back to the last working version (5.10.1) and apply patches for those bugs that have been fixed and are crucial for us. As you can imagine that’s a never ending story…

Alexander Ivash says:

Congrats on release, but things like https://bugreports.qt.io/browse/QTBUG-67965 (another P1) imo should have been fixed.

Karapet Khachoyan says:

It’s awesome! Is there plan in future to make QtSql module work with Webassembly platform?
And, of course, some features like threads, local storage access, and dynamic linking…is it possible to make features above working as well as on desktop platforms?

Sandro F says:

Nice! Thanks for the good work.

All Android Developers should care about https://bugreports.qt.io/browse/QTBUG-72101 which makes this version almost unuseable.

Tomas L says:

And if you’re using Android service, you can’t currently go any higher than Qt 5.11.1, as this one is has no fix or workaround: https://bugreports.qt.io/browse//QTBUG-70772 [5.10->5.11 regression] Activity can not be restarted from service notification

Dimitar Dobrev says:

There’s something which really confuses me. https://wiki.qt.io/New_Features_in_Qt_5.12 says Qt Quick Controls 1 is deprecated but Qt Quick Controls 2 still lacks, as far as I know, native styles to integrate with the host OS. How is Qt Quick supposed to entirely replace QtWidgets over time when it cannot be used to make any decent desktop application?

Volker Hilsheimer says:

QtWidgets is not about to be made obsolete or replaced by Qt Quick? The two UI frameworks provide different paradigms, each optimised for different use cases. If you’re building a desktop app where native look’n’feel is more important than dynamic and fluid UIs, then QtWidgets is your choice; for apps where you want a custom, dynamic, fluid and perhaps primarily touch-friendly UI, and don’t care about native look, Qt Quick is the choice.

Dimitar Dobrev says:

Thank you for taking the time to reply. However, regardless of whether you’re a Qt employee or not, your statement suggests you haven’t tracked Qt Quick since it was released in 2010. It was advertised as the long term replacement of Qt Widgets and it made perfect sense because it’s obviously superior technology. In other words, you’re saying Qt developers “have the choice” of using the old and inferior Qt Widgets just because it has native styles and Qt Quick 2 doesn’t. You’re saying that in 2018 we are just fine without a simple declarative language for GUI flexible scripting language for GUI, declarative animations, GPU optimizations, simple JSON Please take a minute to contemplate how ridiculous this sounds.
So, I sincerely hope what you said is not the Qt Company’s official position. Otherwise it would indicate two critical strategic errors:
1. The Qt Company has lied to and betrayed its users by promising Qt Quick 2 would offer a superior solution for building both desktop and mobile applications and then failing to keep this promise;
2. Qt has regressed because it used to offer the option of building truly native desktop applications with Qt Quick and now it doesn’t.
I am asking the Qt management or at least senior developers to disprove the two points above, in fact, I hope they do.

Sergey Eliseev says:

Hi Dimitar,

I’ve been using QtQuick Controls 1 from their very beginning, and do understand your question and despair. However, working for several companies in past few years, I have to admit that the use case for native controls becomes more and more limited in the desktop space. They are always heavily customised, and it’s easier to do with QtQuick Controls 2. Besides, your statement (2) is not entirely correct, QtQuick Controls 1 were limited in some ways, never were exactly native, and sometimes widgets were more preferable. But they were there.
As to statement (1), I do agree the promise of QML being able to replace widgets is not fulfilled. Or do I mistake my wish for Qt’s promise?

Henk Jan says:

Quote: “We have had a strong focus on quality and fixed more than 2000 bugs since the last Qt LTS version, Qt 5.9.7”

This suggest that 5.12.0 is ready for production and 5.9.7 is full of bugs.

It would be interesting to know how many of the 2000 bugs are actually fixes for regressions added in 5.10 / 5.11 and fixes for new functionality added in 5.10 / 5.11 / 5.12.
My experience is that every .0 release in the QT 5.X was not ready for production and looking at the list. The 5.12.1 list overview contains 144 issues already…so I guess just wait for 5.12.3

Tuukka Turunen Tuukka Turunen says:

@Jan: Depends upon your application. Not every app hits bugs. In general it is worthwhile to test early, even with Beta releases. If you find bugs, report them. Same if you build with .0 – if there are issues, report them. If you are a paying customer, notify support. If you are an open-source user, perhaps you want to fix the bug and contribute to fix into Qt.

dtech says:

Unfortunately many of those “more than 2000 fixed bugs” seem to fall in the category of the countless bugs that were automatically closed because nobody bothered to investigate them for a lot of time.

This may improve the numbers, but it doesn’t improve the quality of the product. Bugs in denial are still very much bugs.

This is not a healthy long term strategy…

@dtech: You are mistaken. The ones mentioned in the blog are closed as fixed/done. The fact that we are automatically closing bugs where e.g. the information needed to reproduce is not provided despite of the reminders, has nothing to do with actual bugs fixed. Automatically closing bugs that can not be reproduced is a very common way to deal with bug reports. It is not possible to fix a reported problem, if the reported problem does not actually happen when tested.

Dimitar Dobrev says:

I fail to understand why my comment was disapproved of. I asked a simple question: as Qt Quick Controls 1 is deprecated as pointed out at https://wiki.qt.io/New_Features_in_Qt_5.12, and as Qt Quick Controls 2 lack native styles, how are we supposed to build native applications with Qt Quick?

Tuukka Turunen Tuukka Turunen says:

@Dimitar: It seems to be answered right above. There is some delay for comment to appear.

Dimitar Dobrev says:

Indeed, thank you @Tuukka. I really was mislead by this delay. I apologize for reposting.

ekke ekke says:

thx for all the great new features in Qt 5.12.0

Attention Android App developers !
there’s a bug (https://bugreports.qt.io/browse/QTBUG-72101) causing your app freezing if Keyboard was shown and later Apps goes thru suspend/resume cycle.
the good news: the bug is fixed
the bad news: we must wait for 5.12.1

Markus says:

What needs to be mentioned is that Android switched to clang, making latest Android toolchains supported again, and giving users c++17 support for that platform – yeah!

There are also these issues which will make some people struggle:
QTBUG-67936 makes Qt Script unusable for me (not sure if anybody but me still depends on it, with switching to clang this issue becomes a regression)
QTBUG-68813 breaks some JNI usecases, with only a workaround which is not recommended by the Android maintainer (since 5.11)

qplace says:

Webassembly-related questions: where to post them? Webassembly commenting blog which this post refers to is closed for commenting. Specifically, I am looking for WA Qt sample project to build on windows platform, with instructions…

Tuukka Turunen Tuukka Turunen says:

@qplace: Feature suggestions can be done via bugreports. Mailing lists are good for discussion about features.

Tomaz Canabrava says:

dudes, it’s free software, you guys *can and should* send patches to things you consider bugs.

Sandro F says:

Dito. Will try to dig into https://bugreports.qt.io/browse/QTBUG-70772 and try to reproduce it with our application.
Maybe an up vote is also an easy win 😊.

arBmind says:

Thanks a lot to the Qt Company for consistently pushing Qt forward!

There are only two types of GUI frameworks – The one’s nobody is using and the one’s everybody is complaining about!

@Everybody complaining: Please feel invited to help make it better!
Either contribute patches for bugs or buy a commercial license so Qt Company has the resources to fix them on their own.
Nothing improves by itself – you need someone to git push!

Andriy Gerasika says:

QtCreator does not highlight “let” and other ES7 keywords 🙁

Simon says:

QTCREATORBUG-20341 covers this and the fix will be in Qt Creator 4.9 🙂

AlterX says:

I just downloaded it and try to launch my android app that uses a library created and built by myself. It works on 5.11.2, but on 5.12 I get lots of error in my lib like:
undefined reference to ‘std::ios_base::Init::~Init()’
undefined reference to ‘std::string::length() const’
error: undefined reference to ‘std::string::operator=(char const*)
error: undefined reference to ‘std::ostream::write(char const*, int)’
and so on…

Alex Blasche Alex Blasche says:

Qt 5.12 is built with the Android NDK 18b and clang. Did you swap your application/creator built over to the new NDK too?

Markus says:

Looks like a missing include of – the newer NDK’s headers don’t implicitly include as many headers as the older ones.

Markus says:

I wanted to write “include of ” “” – the blog comment system seems to cut away such content.

Markus says:

“include of” “smaller-sign” “string” “greater-sign”

Tham says:

Thanks for the release, however I found a problem when downloading Qt5.12.0, following is the screenshot

https://imgur.com/lpYQ5I6

Flynn Zhang says:

Me, too! Is there any solution to solve this problem? I have to download it from “https://download.qt.io/archive/qt/5.12/5.12.0/”, but the size requirement of it is different from installing online. And I don’t know why. 😶

stlcours says:

Please add the support for Linux RISC-V by add mkspec….

Drw says:

I’d happily buy a commercial license if the money would go into fixing desktop / widget bugs.

If the money goes into mobile platform features, not so much. We have no use for QML, etc.

As far as I can see, the widget / desktop side of Qt is what most Qt end users use (I’m talking about end users of applications, not developers). At the same time it seems to get the least attention. We have >100’000 desktop users of our Qt based application (Windows, macOS, Linux). While so far I’ve never spotted a Qt based mobile app in the wild.

Qt (widgets) for macOS is riddled with bugs. Everything from docks over toolbars to dialogs and shortcuts is broken. Qt printing has been broken since a flabbergasting 6 years (remember “Gangnam Style”?) with fixes readily available (QTBUG-5363), but not included in any Qt release since. Shortcuts: broken since 2014 (we’ve implemented our own shortcuts based on key strokes meanwhile).

I really, really want to love Qt but it’s heading the wrong way.

David says:

You have 10,000 desktop users. I hope your application is free and open source, other wise I say you owe the QT company a debt of gratitude.

Drw says:

Yes, we owe a lot to Qt, no doubt. We’ve had commercial licenses from about 2000-2008 (back in the Qt 2/3/4 Trolltech years). Except for support of newer platforms, retina, etc. nothing of huge interest for us has been added to Qt since then. If it wasn’t for support of newer platforms, we’d probably still be Qt 4 based.

Kalileo says:

Our cross platform QWidget desktop apps (Mac/Linux/Windows) make heavy use of embedded QML views (real world apps, thousands of users): Both worlds do _not_exclude each other, but can live together happily. Using widgets where they are easier/better, and integrated QML views where they are easier/better. Using stylesheets for a unified look.

Imho both QWidgets and QML have their place on the desktop, and I look forward to testing the new QtQuick Controls 2 Tableview mixed in these widget desktop apps.

Arthur Nascimento says:

I do not know why many of you are complaining. With pure QML and using QtQuick I can make big desktop and big mobile applications without any difficulties or performance problems. And if some components becomes too complex, it’s just a matter of rewriting it in C++. Never looked back to QtWidgets. Great release, thank you Digia and all Qt Developers.

JaRo says:

And let you others have another opinion?

Donald Carr says:

Awesome! Good job getting 5.12 into the wild:

https://p.chaos-reins.com/ipedehimir.cpp

Because of Yocto’s propensity to check a tag out of a branch, the fact the v5.12.0 tag does not exist in the 5.12 branch is causing severe indigestion at fetch

Donald Carr says:

Ah;

/opt/dev/src/qtcompany/qt5/qtdeclarative(branch:5.12) » git branch -r –contains 64ee4968b46019b8e4cb7523a6e41833fc4cf665
origin/5.12.0

groovy, so for people using qt5 in Yocto with the official tags, the 5.12.0 branch (but not the 5.12 branch at present) will get you compiling

valentin R says:

I cannot even open the QT Creator in KDE NEON
./qtcreator
Segmentation fault
:))) LOL
ConnectionServer error: “QLocalSocket: Remote closed” “/tmp/QtCreator-PWEMdx/ClangBackEnd-4154”

So for me is no release yet , i will wait 5.12.3 maybe in 1 year to make it work…
Till then is time to make some javascript work

Mynor says:

hi example or link share TableView Quick controls? or Qt Quick

JaRo says:

I read Dimitar Dobrev comments and i have for me important question in relation on this comments.
When i understand, is here precondition, that “QtQuick” complete replace in future “native QtWidget componets” ?
This is namely very important for our future framework selection, because we don’t have any interest transfer or rewrite our native QtWidget desktop application to QtQuick scripting and in this case we must go ASAP in another way.

@JaRo: Qt Widgets continue to be fully supported and actively maintained. There are no plans to remove support for Widgets. It is true that overall more and more applications want to provide dynamic UI and use their own custom style, especially on mobile and embedded, but sometimes also on Desktop. For this type of applications, Qt Quick is better fit than Qt Widgets. Qt Quick Controls 1 was deprecated as Qt Quick Controls 2 provides a better architecture for applications that provide their own style, but Qt Widgets continue to be fully supported. More information about how to choose between the options of UI technology provided by Qt for example in this webinar: https://resources.qt.io/development-topic-application-development/the-curse-of-choice-an-overview-of-gui-technologies-in-qt

JaRo says:

@Tuukka: thank you very much for the comprehensive answer.

bertram says:

Hi,
is there a TreeView in QML now?
If not, when will it be supported?

It’s not so important since I postponed the use of qt … I created a medium QtWidget
application some time ago but I had not time to continue it
(and perhaps I will switch away from qt again … reading this blogpost makes
me rather unsure about the quality … I am not the big fan of bad-quality surprises)

@bertram: We have many happy users of Qt and we constantly improve quality. Qt 5.12.0 already provides fixes to over 2000 bugs compared to Qt 5.9.7 – and more will come with Qt 5.12.x patch releases. So there is no need for users to be worried about the quality – at least not more than before Qt 5.12 LTS.

Leave a Reply

Your email address will not be published.

Get started today with Qt Download now