Tuukka Turunen

Qt 5.4 Alpha Available

Published Monday September 8th, 2014
41 Comments on Qt 5.4 Alpha Available
Posted in Qt, Releases

Qt 5.4 release process is ongoing and we now have the Qt 5.4 Alpha release available. As always, the Alpha is in source code only. Binary installers will be available in a few weeks with the Beta release. Features of Qt 5.4 are now frozen and in the next months the focus is in finalising and polishing functionality. To give an overview what is coming with Qt 5.4, I’ll summarise the highlights of the Qt 5.4 Alpha release.

WinRT fully supported

With Qt 5.4 we will have full support for Qt for WinRT. Based on the feedback and experience we have gotten from Qt 5.3 the WinRT port has been polished and improved. For Windows Phone deployments, we have set Windows Phone 8.1 as the minimum supported version, allowing us to remove the dependency on the previously-used D3D compiler service and greatly simplify deployment to the device. Most Qt modules are now supported on WinRT, so with Qt 5.4 it is easy to bring your Qt applications to Windows Phone, Windows tablets and PCs with the Modern UI, as well as publish in the Windows Store.

Graphics improvements

With QQuickWidget introduced in Qt 5.3 it became possible to easily show Qt Quick content inside a Qt widgets based application. Qt 5.4 introduces QOpenGLWidget, the modern replacement for the old QGLWidget class from Qt 4. QOpenGLWidget is a new widget for showing OpenGL rendered content, which can be used like any other QWidget. This also allows us to deprecate old Qt OpenGL module, as everything it does and more is now provided by other modules.

Qt 5.4 also brings new QQuickRenderControl API, which allows efficient rendering of Qt Quick 2 scenes into framebuffer objects. The contents can then be used in arbitrary ways in Qt-based or 3rd party OpenGL renderers. With Qt 5.4 you can also adopt and wrap existing OpenGL contexts in QOpenGLContext. This improves the ability to embed Qt content for use in other rendering engines. In addition to other new graphics APIs Qt 5.4 brings convenient QOpenGLWindow and QRasterWindow classes as well as introduces support for 10-bit per color channel images.

On Windows it is now possible to dynamically select during the application startup whether to use ANGLE or OpenGL. It is possible to use either opengl32.dll or ANGLE’s OpenGL ES 2.0 implementation in Qt applications without the need for two separate builds of the binaries.

Android Style for Qt Quick Controls

We have extended the styling capabilities of Qt Quick and added support to Android style, which enables native look for Widgets and the Qt Quick Controls on Android. In previous versions of Qt it was possible to style Widgets to look native on Android only if one used Ministro. Now both the Widgets and Qt Quick Controls, i.e. buttons, sliders, progress bars and other controls and widgets you use in your application, will look native on Android by default.

Qt Bluetooth and BluetoothLE

Qt Bluetooth now supports Bluez5. There is also a technology preview implementation of Bluetooth Low Energy available.

New Qt WebEngine and Qt WebChannel

The biggest new item Qt 5.4 brings is the new Qt WebEngine, integrating the comprehensive web capabilities of Chromium 37 into Qt. The integration with Qt focuses on an API that is easy to use, yet extensible. We have worked hard with the new Qt WebEngine ensuring seamless graphics integration, to allow rendering of Chromium’s textures directly into the OpenGL scene graph of Qt Quick. Earlier this year we have already released Qt WebEngine with Qt Enterprise Embedded, with Qt 5.4 we are now adding support for the desktop platforms Linux, Mac OS X and Windows.

In addition to Qt WebEngine, Qt 5.4 introduces new Qt WebChannel module for integration of QML/C++ and HTML/JavaScript. Qt WebChannel can be used to expose QObject functionality to Javascript in Qt WebKit or Qt WebEngine.

Qt 5.4 also contains Qt WebKit. It 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.

Other items

These are just a few examples of new things, you can find a more detailed list in wiki for what is new in Qt 5.4. If you try out Qt 5.4 Alpha, you may want to check the Known issues page.

Qt Location and Qt 3D have also been under work recently, but they are not ready to be included in Qt 5.4.

More licensing options

As a new licensing option, Qt 5.4 comes with LGPLv3 licensing option for all Qt modules, as announced earlier. The new Qt WebEngine is available only with LGPLv3 and GPLv2 licenses, as well as the commercial Qt Enterprise license. For more information about this change, please refer to the “Adding LGPLv3 to Qt” blog post.

Download Qt 5.4 Alpha

You can find Qt 5.4 Alpha source packages in your Qt Account, if you are a Qt Enterprise licensee, of from Qt Project Downloads, for the open-source version.

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

Posted in Qt, Releases

41 comments

Congratulations to all Qt 5.4 contributors for this Alpha release, makes Qt even better!

Michal says:

“We are also planning to deprecate Qt WebKit in future releases, as the new Qt WebEngine provides what is needed.”
Not really, it will take some time before it will have similar APIs (hopefully it will at least have some replacements, if QNetworkAccessManager integration won’t be added), but at least there is Qt WebChannel to fill some missing gaps when comparing to WtWebKit. :-)

Benoit says:

Thanks, 5.4 is looking very promising! I had the impression that QtLocation (including Map view) was ready and part of Qt 5.4, though…

Tuukka Turunen Tuukka Turunen says:

@Benoit: Qt Location is starting to shape up, but it was still considered to benefit from a bit more polish before getting it into Qt (as part of an official release).

Ville says:

Looks great. Thank you very much. I’m expecting great things from QQuickRenderControl.

But, when compiling (I compile always myself) on linux machine (Qt5.3 compiles without any worries), it failes:

g++: error: unrecognized command line option ”-fuse-ld=gold”

A small dejavu crawled into my head with this…

It’s because -fuse-ld is not implemented upstream in gcc but most Linux distributions patch gcc to add it

What’s your distribution and gcc version?

Ville says:

I see, thanks for clearing that. I’m using Sabayon Linux, the rolling distro. Command gcc -v says:
gcc-versio 4.7.3 (Gentoo Hardened 4.7.3-r1 p1.4, pie-0.5.5)

I think I had the same problem in some other Qt5 alpha version, but every RC and beta have worked well.

Ville says:

Again, thanks for the tip. Usually I don’t have to configure anything, I just code and compile. But with your tip, I was able to switch the Gentoo system linker ld.bfd to ld.gold. And it works now.

Sungwon Nam says:

So if QtWebKit is going to be deprecated in future then, QtWebEngine will provide replacement for QGraphicsWebView ??

Robin Lobel says:

The OpenGL improvements are great news ! I’m really looking forward the new QOpenGLWidget.

Dynamic OGL/Angle selection is great too, it will certainly reduce the number of Qt installers !
From a developer’s perspective, how do you select the one you want, from your C++ code ?

Laszlo Agocs Laszlo Agocs says:

Please see the Dynamically Loading Graphics Drivers section in the Windows-specific platform notes: http://doc-snapshot.qt-project.org/qt5-5.4/windows-requirements.html

Dyami Caliri says:

This is great.

QOpenGLWidget has some limitations and performance issues I hadn’t expected. I don’t see any way to share a context across windows. Is that possible?

Our application makes heavy use of multi-texturing, which is less supported in frame buffers than in direct rendering, so this is also a problem for us.

What we really need is a way to use OpenGL for the whole window, but still have many QPainter-painted “widgets”. Basically it would be great to get the performance of QML but without having to rewrite the entire program to use it.

Laszlo Agocs says:

Right now, in the alpha, the available options are: (1) Contexts of QOpenGLWidgets in the same top-level window share with each other by default. (2) Apps are free to create extra contexts that share with a given QOpenGLWidget’s context.

The ability to have contexts that share resources with each other is currently missing for QOpenGLWidget/QQuickWidget instances that belong to different top-level window. This will indeed need to be addressed in some form before the release.

With regards to multi-texturing, can you elaborate about the limitations?

Dyami Caliri says:

I might be misunderstanding, but I thought GL_EXT_framebuffer_multisample was required if I wanted a shader to use multiple textures as input. If I am correct, there are some drivers that support GL_ARB_multisample but not GL_EXT_framebuffer_multisample, so that would limit which cards the code could run on.

Also, can you comment on the performance of blitting the texture back to the screen with QOpenGLWidget?

Laszlo Agocs says:

Support for framebuffer blits and multisampled renderbuffers is part of core OpenGL 3.0 and OpenGL ES 3.0. Lack of support for the extension is mainly an issue on older, OpenGL ES 2.0 only hardware.

Multitexturing (using multiple texture units to sample from different textures in the same shader) bears no relation to this.

Donald says:

Good to see Wayland move into the release too :)

It will be nice when distro’s start packaging it, although I don’t really see how they can support desktop GL/GLESv2 without having parallel Qt builds in their repos.

Intel users now want Qt compiled with EGL/GLESv2 support. Everyone nailed to a binary blob wants desktop GL support.

Am I missing something? This does not belong in the comments section, but I am a bit of a miscreant.

Laszlo Agocs says:

Yes, and that is why, as far as I know, it remains a source-only release, meaning there will be no Wayland plugin binary in the official Linux builds.

There is nothing preventing distros from building for regular OpenGL, though. EGL + desktop OpenGL is a valid, if rarely used, combination too.

Slartibart says:

The known issues page says: “Building on Windows currently requires Visual Studio 2013 or Visual Studio 2013 Express Edition … will not be fixed for the final release …”, does this mean WebEngine can’t be built with MinGW in 5.4+?

HGH says:

Maybe not. I remember similar “notes” in previous Qt 5 releases too.

Clemens says:

I might be mistaken, but I don’t think it means that it can’t be built with MinGW, a fresh mingw-build with gcc 4.9 should definitely be able to build chromium sources. AFAIK chromium uses several C++11 features extensively and VC2013 finally supports most of them.
But maybe there are other limitations within the QtWebEngine code itself.

DavidB says:

It’s been said a hundred times that Widgets are done, but in case you have any sw engineers with idle time here is what I would like to see added to Widgets

1) Redo the MVC as it is super slow to load large data sets (The web is littered with similar comments)

2) Redo QToolbar, make it easier to layout non buttons in there

3) Redo QHeaderView as it is really a bastard child and needs some love, very hard to implement your own look and feel for this

4)Investigate multithreading of QtGUI. We have 4 plus core machines and the GUI thread is often a bottle neck

5) Hardware acceleration for drawing Widgets

6) Ability to add one or two lines of text to something like a file dialog.

7) Need a file selector widget (like FileDialog) to embed in another widget

Hey I know you guys are busy, and your doing a kick ass job with the QML and getting QT on every platform known to man. And I should pay to use your product before even daring to post this ( 8 – lower price of…

Donald says:

At first I thought DavidB resolved to David Boddie, and I was surprised. Then my brain actually made an appearance.

@DavidB

Good luck trying to hardware accelerate QtGui’s calls at hi-dpi resolutions using something like GL; you would swear we had not invested significant effort in this area before. QML was our architectural solution to this very technical problem, we weren’t being coy about it.

In any case Nokia is not bank rolling this. Digia’s customers can steer priorities/roadmap via their channels/account managers, and everyone else in existence can contribute code/improvements as and when they want to.

DavidB says:

Sorry I did not know you had a copyright on the letter ‘B’ Donald Brodie. But I do have a File Selector Widget I would like to contribute. It is not yet very polished with properties defined, but it works. Where can I submit it for people to use.

The only metric I have to go on as to what Digia product is most relevant is the Qt Project Forum. It infers Qt has a lot more use then QML by a large margin.

-David Boosalis

JKSH says:

You can release the component in your own public repository (Github, BitBucket, etc.)

Or, if you want it integrated into Qt, polish it and follow the Qt Contribution Guidelines: http://qt-project.org/wiki/Qt-Contribution-Guidelines

brexis says:

This is a very great new.
So when can we expect a portable version of Qt WebEngine on Mobile platforms ?

Eskil Abrahamsen Blomfeldt Eskil Abrahamsen Blomfeldt says:

Using Qt WebEngine on iOS is not possible due to limitations in the app store policy, so instead of focusing on porting the full web engine to mobile platforms, we have implemented a light-weight QML overlay which builds on top of the native web view and works cross-platform.

This is called Qt Web View and currently has implementations for iOS and Android (with a fallback to Qt Web Engine on the platforms that support this). A tech preview will be released around the time of the Qt 5.4.0 release.

Stefan Lang says:

Nice, can’t wait to try it out! But what about WebEngine on Android?

Sébastien Léon says:

It seems that configure.exe is not in qtbase.
Windows build could fail with following message :
‘configure.exe’ is not recognized as an internal or external command,

In this case, just comment line 45 of qtbase/configure.bat and configure.exe will be builded automatically…
(at least worked for me)

Cyttorak says:

Great news about that QML with Android native look&feel

About the new web stuff, does it have a debugger like the old one?

emspan says:

Why there are no fixes from 5.3.2 branch in this alpha release? For example this one https://qt.gitorious.org/qt/qtbase/commit/97384030efd6465de42e786779cf80b309e763e3
When it will be integrated?

Jani Heikkinen says:

Fixes from 5.3.2 will be merged to 5.4 -branch soon & should be available in the beta

SceneGrapher says:

I couldn’t get the 5.4 alpha to build on linux (neither with g++ 4.9 nor with 4.8.2).
The reason seems to be that the sqlite that comes bundled in chromium gives many linker warnings about
/bin/ld.gold: warning: hidden symbol ‘sqlite3_mprintf’
probably because the libsoftokn3.so of nss (which is also required by chromium) uses the system-installed sqlite3.

I tried the following two configure parameters in order to get around this problem: first
-system-sqlite
then
-no-sql-sqlite
but neither allowed the build to work.

then i tried to add use_system_sqlite=1 to qtwebengine/src/core/config/desktop_linux.pri
but that gives another type of error: undefined reference to ‘chromium_sqlite3_destroy_reusable_file_handle’

possibly the sqlite bundled with chromium might be heavily modified and on the other hand it conflicts with the system sqlite3 loaded by libsoftokn3.so (?)

did anyone get it to build on linux? any idea what i might be missing there?

HGH says:

So there will be MinGW 4.9.1 binaries I guess?

HGH says:

The recently UPDATED online installer destroyed the Qt Creator installation on my Windows 8.1 machine. The original and supposedly buggy and distructive installer updated the Qt Creator without a hitch on my Windows 7 machine.
Hopefully you’ll get the installer right for the Qt 5.4 release!!!

Kai Koehne Kai Koehne says:

The updated installer contains a check detecting corrupt installations. Have you run into this? If not, please file a bug with details about your issue.

Alex says:

Thank you for the release!

Any chance to see the QML compilation available in the open source version any time soon?

It would significantly improve performance of thousands of open source applications using Qt, especially in KDE.

Tuukka Turunen Tuukka Turunen says:

@Alex: No such plans at the moment. Tools are difficult to provide in a manner that only open-source users can use them. But I fully agree with you that having it would be good and beneficial for open-source applications.

dev-sst says:

Thank you for all your hard work.

Any news about the
http://doc-snapshot.qt-project.org/qt5-5.4/qmlstatemachine.html
that Ford contributed lately?

Violet Giarffe says:

“On Windows, only ANGLE based builds are supported.” Will that also apply to the final Qt 5.4 build, or just the limitation of alpha version? My application is totally incompatible with ANGLE builds as it uses native OpenGL.

raf says:

Congrats QtWebEngine will be a huge step forward.

Build is currently failing for me on Linux (openSuse 13.1 x64) while building QtWebEngine

../../../src/core/render_widget_host_view_qt.h:96:1: error: expected class-name before ‘{’ token

Seems like a pretty ridiculous error, the class declaration looks ok. Has anyone seen this up until now?

massimo belgrano says:

In 5.4 will be used Mingw 4.9 with seh exception?

Commenting closed.

Get started today with Qt Download now