Lars Knoll

Qt 5.4 released

Published Wednesday December 10th, 2014
56 Comments on Qt 5.4 released
Posted in KDE, News, Qt

I am happy to announce that Qt 5.4 has been released today and is available for download from Together with Qt 5.4, we have also released Qt Creator 3.3 and an update to Qt for device creation on embedded Linux and embedded Android.

But let’s start with Qt 5.4. One of the main focus areas of this Qt release has been around Web technologies and we have a lot of cool new things to offer there.

Renewed Web Story

HTML5 and Web technologies have become more and more important over the last years, and we have spent the last year developing a completely renewed Web offering for Qt. The Qt WebEngine module is the result of a long-term R&D project where we adopted the Chromium Web engine for use within Qt. With Qt 5.4, it is fully supported on the most used desktop and embedded platforms. Qt WebEngine provides you with an easy-to-use API to embed Web content in both Qt Widgets and Qt Quick based applications.

The new Qt WebChannel module provides a simple-to-use bridge between QML/C++ and HTML/Javascript. This enables the creation of hybrid applications that use both Qt and Web technologies. Communication between both sides happens by exposing QObjects in the Web context. The module works not only with Qt WebEngine, but also with any other browser engine that has support for Web sockets.

As a third component, Qt 5.4 introduces a Technology Preview of a new module called Qt WebView. The Qt WebView module offers a more limited API to embed the web browser that is native to the underlying operating system for use cases where the full Qt WebEngine isn’t needed, or where it can’t be used because of restrictions coming from the underlying OS. In Qt 5.4, the Qt WebView module supports iOS and Android.

Together with the Qt WebSockets module introduced in Qt 5.3, Qt now has great support for many of the latest Web technologies and makes interacting with Web content very easy. Qt WebEngine and Qt WebView make it very easy to embed HTML5, Qt WebChannel creates the communication channel between Qt and HTML5 that is required for hybrid applications, and Qt WebSockets allows for an easy communication between Qt and many Web services.

Qt 5.4 also still contains the older Qt WebKit module. Qt WebKit is still supported, but as of Qt 5.4 we consider it done, so no new functionality will be added to it. We are also planning to deprecate Qt WebKit in future releases, as the new Qt WebEngine provides what is needed. In most use cases, migrating from Qt WebKit to Qt WebEngine is rather straightforward. If you are starting a new project that requires web capabilities, we advise that you already start using Qt WebEngine.

Qt for WinRT | Completing our Cross-Platform Offering

The second big new feature of Qt 5.4 is the completion of our cross-platform story with the full support for Qt on Windows Runtime. Qt for Windows Runtime was already added as a supported Beta to Qt 5.3, and has now reached the state where it is a fully supported part of Qt. With Qt for Windows Runtime, you can create applications for the Windows Store, targeting both Windows Phone 8.1 and above as well as Windows 8.1 and newer.

This port completes our cross-platform story and we feel that Qt now supports all currently relevant desktop, embedded and mobile operating systems.

Graphics updates

Qt 5.4 brings also a lot of other new features and improvements. One focus are has been around graphics. With Qt 5.4, we now introduce better support for high-resolution displays for our desktop platforms. The support is still considered experimental in Qt 5.4, if you are interested, check out the overview documentation.

OpenGL support on Windows has been problematic in a few cases, since there aren’t always good drivers available. To help with this problem, Qt now has the capability to dynamically select the OpenGL implementation that is being used at application start-up time. Qt will now choose between using the native OpenGL driver, the ANGLE’s OpenGL ES 2.0 implementation that translates to DirectX or a pure Software rasterizer.

Qt Data Visualization has been updated to version 1.2 including additional features such as volume rendering and texture support for surface graphs and performance improvements. Qt Charts has now been updated to version 2.0 including better Qt 5 modularization, binary packages and minor improvements.

Other improvements on the graphics side is the new QOpenGLWidget class that replaces the old QGLWidget class from Qt 4 and allows us to deprecate the old Qt OpenGL module as all relevant functionality can now be found in Qt Gui. QOpenGLContext can now wrap existing native contexts. You can use the new QQuickRenderControl to render Qt Quick scenes into an offscreen buffer. For more details check out this blog post.

Finally, Qt 5.4 contains a technology preview of our new Qt Canvas3D module, that implements a WebGL like API for Qt Quick. This module makes it very easy to use Javascript code using WebGL within Qt Quick.

We have so many new things in Qt 5.4 that we have to list them all. Before you keep moving down the blog, check out our Qt 5.4 highlights video.


Other new features

A large amount of other new features have also found their way into Qt 5.4. I’ll just mention a few of them in this blog post.

Qt now supports Bluetooth Low Energy on Linux using BlueZ. Support for other platforms will come in later versions of Qt. Bluetooth LE makes it possible to communicate with many modern Bluetooth devices such as e.g. wearables.

On Android we now have native looking Qt Quick Controls, as well as smaller deployment packages and faster application startup times. For iOS and Mac OS X, we have now support for the latest operating system versions, XCode 6 and the new code signing style required to push applications into the App Store. We especially worked hard to fix all issues related to the new style on Mac OS X 10.10.

Qt Qml comes now with support for Qt State Machines through the new QtQml.StateMachine import, and Qt Core has gained a new QStorageInfo class giving you information about mounted devices and volumes.

Qt Quick Controls now also come with a brand new and great looking ‘flat style’ that can be used on all platforms.

Qt 5.4, also comes with a brand new version of Qt Creator, Qt Creator 3.3. For details on all the new things in there check out our separate blog post.

Qt for device creation

Today, we also release a new version of our development package for device creation. Here are some of the new features that are included in this release:

We now have preliminary support to run Qt Applications on Wayland using the Weston compositor on i.MX6 based devices, including support for Video and Qt WebEngine.

We added a new B2Qt Utils module that gives easy access to device-specific settings such as the display backlight, hostname or power state from both C++ and QML. The B2Qt Wi-Fi module is now officially supported and makes it easy to configure your Wi-Fi network.

Apart from these new features we have added a large amount of improvements:

  • eAndroid Qt Multimedia plugin update.
    • The implementation of Qt Multimedia for embedded Android has been refactored, resulting in a cleanly separated and easier maintained plugin for that platform.
  • SD Card Flashing Wizard for easier b2qt image deployment
    • Simple wizard for writing system image to SD card
    • Integrated into Qt Creator
  • BYOS (Build Your Own Stack) Improvements
    • Improved scripts for initializing and managing the Yocto build environment: Using repo tool for managing the numerous meta repositories needed for different devices.
  • eLinux: Camera support for i.MX6 devices
    • All necessary GStreamer plugins for using camera in Qt Quick applications are now integrated into reference device images
    • MIPI camera support added

With this version, we have also added new hardware reference platforms, including a low-end profile for the GPU-less Freescale Vybrid. The complete list of reference hardware supported by Qt for device creation can be found in the documentation.

Qt Quick without OpenGL

Another great new feature for our embedded customers is the new Qt Quick 2D Renderer module. This new commercial add-on allows using Qt Quick on embedded devices that have no OpenGL hardware acceleration. The new Qt Quick2DRenderer module can render most of Qt Quick using pure software rasterization or 2D hardware acceleration through e.g. DirectFB or Direct2D. The module support all of Qt Quick with the exception of OpenGL shaders and particles.

This enables the creation of Qt Quick based user interfaces with a modern look and feel on lower end devices than before. In addition, the ability to use the Qt Quick API across a device portfolio spanning devices both with and without OpenGL significantly reduces the amount of UI code you need to write and maintain. To showcase the Qt Quick 2D Renderer’s capabilities, we have added the Toradex Colibri VF50 and VF61 devices as new reference hardware to the Boot to Qt software stack, demonstrating our ability to run on the Freescale Vybrid SoCs.

Introduction of LGPL v3

As announced earlier, the open-source version for Qt 5.4 is also made available under the LGPLv3 license. The new licensing option allows us at The Qt Company to introduce more value-add components for the whole Qt ecosystem without making compromises on the business side. It also helps to protect 3rd party developers’ freedom from consumer device lock-down and prevents Tivoization as well as other misuse.

In Qt 5.4, a few modules are exclusively available under GPL/LGPLv3 or commercial license terms. These modules are the new Qt WebEngine and the Technology Previews ofQt WebView and Qt Canvas 3D. The Android style is only available under a commercial license or the LGPLv3. You can find more details here.

Thanks to the Qt Community

Qt 5.4 adds a lot of new functionality and improvements. Some of them would not have been possible without the help of the great community of companies and people that contribute to Qt and are not employees of The Qt Company.

While I can’t mention everybody here, I would like to still name a few. I’d like to thank our Qt Service Partner KDAB for continuously being the second biggest contributor to Qt, and in this release especially Milian Wolf for his work on Qt WebChannel. I’d also like to thank Orgad Shaneh from Audiocodes for his continuous help on and involvement with Qt Creator and Thiago Macieira from Intel for his long-term involvement. I’d also like to mention Brett Stottlemyer from Ford for contributing the new QML State Machine Framework and Ivan Komissarov for the new QStorageInfo class.

Make sure to try Qt 5.4, Enjoy!

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

Posted in KDE, News, Qt


Laszlo Papp says:

Congrats to the release. :)

zeecrowddev says:

Congrats to the release !!!

One question : The VS2010 package includes the dynamic swith between “angle” and “opengl” ?

Laszlo Agocs Laszlo Agocs says:

No, it does not. Check the filename: if it contains -opengl then it is built with -opengl desktop, meaning it is a traditional opengl32.dll-only package.

The packages without -opengl are dynamic ones. Currently this includes the 32-bit & 64-bit VS2013 builds only.

zeecrowddev says:

Bad news :-(
I must compile Qt because VS2010 is the only way to works with XP … And OpenGl are often not installed on theses computers.
If it’s possible ….

Laszlo Agocs Laszlo Agocs says:

Yes, you can just compile from source and configure with -opengl dynamic.

Slartibart says:

VS2013 can also be coaxed into supporting XP, there is an option in configure (-target xp) which makes the VS2013 compiler use the 7.1 version of Windows SDK and thereby allowing it to run on XP. Another alternative (although it doesnt always work) is to add LINK=”/SUBSYSTEM:WINDOWS,5.01″ to the build environment.

Oliver Niebuhr / MeerMusik says:

“In most use cases, migrating from Qt WebKit to Qt WebEngine is rather straightforward. If you are starting a new project that requires web capabilities, we advise that you already start using Qt WebEngine.”

People who still want to use the MingW Compiler instead of the Visual Studio one, are “stuck” forever with the QWebKit Module, as it can only be compiled with a MSVC Compiler.

And I have not read anywhere on the web yet, that this will ever change. Or did I miss something? Then feel free to correct me please.

Or has Digia any plans to advance the QWebModule so far, that maybe in 5.5(?) a) its Feature List is comparable to QtWebKit and b) availabe on PC (Windows) also and not only for iOS and Android?

Anyway: Thanks to the whole Team for the hard work and also to every single contributor, who made this Release possible :)

Enjoy your free time: 5.4.1 is coming 😉

raven-worx says:

That MSVC2013 dependency is caused by Chromium itself. So there won’t be anything that can and will be done by Digia without modifying the Chromium source. Which would disagree with the decision to switch to Chromium in some way 😉
Nevertheless Microsoft released a “Community Edition” of Visual Studio. You can even install the Qt plugin there. And also use it for commercial use (if you follow some restrictions).

But i personally also can’t switch to QtWebengine, not because of compiler incompatibility, but simply to the fact that there is no possibility to use a custom QNetworkAccessManager (or comparable) which give more control of the network traffic.. :/

Stefan Fröberg says:

You mean that I can’t subclass QNetworkAccessManager, attach it to QtWebEngine and use QNetworkAccessManager::createRequest() method anymore to handle traffic???

If that is the case then Im going to stick with QtWebKit

Oliver Niebuhr / MeerMusik says:

Exactly. And because of these Hard Dependencies built in Chromium, is why I am asking 😉

Well, we will see what 2015 and the Future brings.

kangjoni7 says:

Nice to see , when will qt WebView and bluetooth support WinRT platform?

Maurice Kalinowski Maurice Kalinowski says:

Bluetooth is high on our list for the upcoming releases. WebView would be more complicated as we’d need to reimplement the entry point completely.

Current we start an application via a C++ entry point, but would need to switch to C#. On the other hand that might give us other advantages.

Robert says:

My congratulations and best wishes to the great Digia team
and the Qt-open-source community.

Regarding the statement: “Qt now supports all currently relevant desktop, embedded and mobile operating systems.”,
IMHO this is just only a start where some platforms like Android are more or less mature whereas more recent iOS-port still requires attention with many serious issues being open.

Sometimes, these issues are seen at the side of Qt-team as not so critical and getting less priority whereas they are show-stoppers for many applications.

Season greatings and best wishes!

Congrats for the great release!

We have put together a summary of new Qt 5.4 features from an app, and game developer’s point of view here, for those interested:
Best Qt 5.4 Features for Qt App & Game Developers

Robin Lobel says:

Awesome release, congrats!

Nodir says:

Installed ‘qt-opensource-windows-x86-msvc2013_opengl-5.4.0.exe’ with checked “Qt Canvas3D” module, but there is no Qt5Canvas3D.dll

Jani Heikkinen Jani Heikkinen says:

Canvas3D TP is src delivery only

miskol says:

Any plan to add something like WebEngine but without JS or with light JS engine(without compilation)
In some situation we need to show html formatted data but wd don’t need JS runtime
So It should be nice to have this feature.

We don’t need super fast browser in most situation.

JKSH says:

They don’t display full HTML documents, but classes like QLabel and QTextEdit can display some HTML-formatted text:

Willian Britto says:

I’m happy with solution of problem with OpenGL =D, finally i can use the version 2.x of QML. This dynamic selection between OpenGL, ANGLE or Software rasterizer left me much happy.

Tulio says:

Can I use automated test suits like Capybara with Qt WebEngine?

It seems that it might be possible with the qwebchannel.js, but I’am not sure about it.

HGH says:

On a second Windows 7 PC I am getting errors of this kind during update/uninstalling:

Installer Error
Error during uninstallation process:
Execution failed(Unexpected exit code: 2): “C:\Qt\/Tools/QtCreator\bin\sdktool.exe rmKit –id qt.54.win64_msvc2013_64_kit”
Retry Ignore

I’ll try to do a clean install now.

iieklund says:

Can you please run the installer/Updater with command line option “–verbose” and if the issue persists create a bugrepot including the installation log.

Massimo says:

Congratulations to the Qt team !

Now can you guys please update the documentation to build QtWayland on the Raspberry Pi ?
I still haven’t been able to figure it out myself even though I can build a working 5.4 on eglfs.

This wiki page says coming soon since 8 months…

Thanks !

Walter says:

Question about the installer packages: Does the “Qt 5.4.0 for Android and iOS (Mac, 1.7 GB)” installer also include/install everything I need to develop regular desktop applications? Or do I also need to download the “Qt 5.4.0 for Mac (599 MB)” installer? (And if the latter, does it matter which order I run the two installers?)

Jani Heikkinen Jani Heikkinen says:

Yes, Qt 5.4.0 for Android and iOS installer also includes everything you need to develop regular desktop applications.

Strahlex says:

Is the Canvas3D supported on all platforms?

Pasi Pasi says:

Canvas3D should support all platforms that have QtQuick 2 support and that have OpenGL 2 or OpenGL ES 2 available on them. So far we’ve tested it on Windows 7/8, OS X 10.8/10.9/10.10, Ubuntu 14, iOS 7/8 and Android 4.4 successfully.

I have been waiting for this release since Digia took over Qt 2 years ago. The Android and iOS ports are now completely mature and stable. Plus, the WinRT port which looks really promising. Congratulations to all the people that made this possible!

However there are still some issues and I am hopeful these will be solved in forthcoming releases.

1) On Windows Phone or WinRT, I, for one, haven’t been successful in playing sounds, regardless of their source or the QML type used. Does playing sounds really work now on WinRT?

2) Qt Multimedia could have been in a better state. There are a lot of P1 and P2 bugs affecting the Qt Multimedia module on the mobile platforms that have not been fixed. Fortunately, there are workarounds around those bugs that sometimes makes those bugs less noticeable.

3) Will there be any examples/tutorials on how to mix C# and Qt C++ in a WinRT app? Would love to see a blog post on this subject.

Oliver Niebuhr / MeerMusik says:

Oh I forgot to ask:
Are there simply no News about those BlackBerry Issues or is no one anymore working on the BB Stuff? I mean this Page:
Last Edit: 29 April 2014

Thanks :)

Benoit says:

I agree, would be great to improve the BB10 version. It is mostly working but needs some more love to be completlely mature. And to make sure that Qt5 perfectly works on all major mobile platforms!

Vladimir Minenko says:

Qt 5.3 and even Qt 5.4 should be working generally pretty good on BlackBerry 10. Last changes and improvements were done rather for the pure QNX Neutrino OS targets though. There is no interest in Qt5 in BlackBerry: Qt4 works good enough on and for BlackBerry 10 and there is no need to migrate to Qt5. Due to this, I expect, there will be less and less work done on and with Qt on BlackBerry 10 by time.

I, for one, am very interested in Qt5 for BB10. I even published a game using Qt5: and I can confirm that, in most parts, Qt5 is in an excellent state on BB10. However there are some blocker issues that would simply discourage the average developer from using it. These bugs can be “easily” worked-around by processing BPS events, hacking the bar-descriptor a bit or by simply making native C calls on BlackBerry. It would take so little effort to make the BB10 port just as good as any other mobile port. But when almost 99% of the work was done, someone decided to pull the plug on Qt5 on BB10. It’s a shame!

What I’m not interested on BB10 is Cascades. It’s not essential to bring Cascades to Qt5. I hardly make any use of it now, when it’s based on Qt4. But BB still seems to beat this dead horse that is Cascades, instead of giving the BB10 port just a little push to make it a 1st tier platform on Qt5.

Malek Khlif says:

Good Good Gooooood Job :)

I Love Qt :)

Alexei Vinidiktov says:

> Qt Quick Controls now also come with a brand new and great looking ‘flat style’ that can be used on all platforms.

How can I enable this style? I haven’t found any documentation about switching built-in styles in Qt Quick Controls.

Scorp1us says:

+1 this. I am looking for this info too and cannot find any.

Will says:

For the past few release announcements, my comment has basically been, “When are you going to have QOpenGLWidget ready?” This time, my main comment is “Woohoo!”

The develop branch of my application will depend on the new OpenGL stuff within a few days. I’ve already started updating my code. I’m really pleased about not having to figure out how to share contexts between the old QGLWidget and stuff like QOpenGLFramebuffer. Congrats on a great release that is already helping at least one developer!

Dan says:

Congratulation and would like to ask one question
“When are you going to have Qt3D ready?”

Pritpal Bedi says:

Great news. Thank you Digia for yet another milestone.

A question: Will Qt Multimedia Widgets will ever be supported on Android ? It is important for us Harboureans who have developed bindings for Qt ( HbQt ) solely on QtWidgets and can access any feature through QtWidgets based classes. I was hopeful it to be available in this release.

Anyway, great job, and thank you.

Dan says:

One question, “When are you going to have Qt3D ready?”

Tuukka Turunen Tuukka Turunen says:

@Dan: While waiting for Qt 3D to be ready for a release you can take the current development version for a spin from dev branch. Or try out the Canvas 3D that is available as a technology preview with Qt 5.4.

qomg says:

Where is full support for Windows Phone and Windows RT? Audio does not work! It’s a shame because the rest works awesome.

bnogal says:

Any chance to use QML Compiler on Android/IPhone with indy licence?
Or it is already used to fit iphone restrictions?

i am thinking about taking an indy licence, but i have doubts about it, as i would like to “hide” a bit the qml code.

DavidB says:


Why do you not just define your QML files as Qt Resources

bnogal says:

As i understood, if you set files on qt resources, but you dont use QML Compiler, qml code is just compressed with the app.
So it just to uncompress and read the code, i dont know if it keeps the comments aswell.. or unless the code is obfuscated, something that i doubt.

As simple as, if i dont get any extra protection so other can uncompress it, generate a clone app and publish, i would rather offer my app as GPL
and count with the legal support from FSF.

So there is my question, to solve the iphone restrictions in indy licence, the qml code is compiled? it is done for android too? or i am completely wrong.

Tuukka Turunen Tuukka Turunen says:

@bnogal: No, unfortunately not. If you want to enjoy the benefits of the Qt Quick Compiler, you need to have Professional or Enterprise license.

J says:

QtWebView … finally!

Kenz says:

I was surprised that this came out of RC so soon. seems like a really bad regression for OSX.

Rainer says:

Class QUrl: fromNSURL ist missing. So drag and drop of URLs don’t work on OS X 10.10 Yosemite (see also QTBUG-40449)

Anyway, great job, and thank you.

Gao Yang says:

Any date for 5.4.1 release? I heard 5.4.1 will include QtDBus binaries in Windows distribution.

Tuukka Turunen Tuukka Turunen says:

@Gao Yang: Current plan is to have Qt 5.4.1 released in February.

Jani Heikkinen Jani Heikkinen says:

Gao Yang: There are changes under work to be able to have Qt5DBus.dll in our Windows binaries. But we haven’t decided yet if we will add those in our Qt 5.4.1 binaries or not. Most probably yes if changes are ready early enough & don’t cause issues in the packaging side…

Wilem says:

I hope that WebEngine to be cross-compiled on AM335X embbed Linux board. Any plan on that?

Viironen Kalle Viironen Kalle says:

Hi Wilem. This is available in enterprise offering. Just contact us via Qt Account and we can provide you the image.

Duane Perry says:

Is there a plan to have future releases of QT to meet the FACE (Future Airborne Capability Env) in the future?

Commenting closed.

Get started today with Qt Download now