Lars Knoll

Qt 5.7 released

Published Thursday June 16th, 2016
65 Comments on Qt 5.7 released
Posted in Biz Circuit & Dev Loop, News, Qt, Releases

I’m very happy to announce that Qt 5.7 is now available. It’s been only 3 months since we released Qt 5.6, so one might expect a rather small release with Qt 5.7. But apart from the usual bug fixes and performance improvements, we have managed to add a whole bunch of new things to this release.

Updated licensing

Before going into the content and all the cool new features, I should mention the changes to our licensing that have been implemented with Qt 5.7.

Qt has always been available as Free Software, and will continue to be so in the future. Qt is being developed as an open source project, The Qt Company is fully committed to this, and in addition, the agreement with the KDE Free Qt Foundation legally ensures this.

With Qt 5.7, we are slightly adjusting our licensing of the Open Source version to bring it more in line with the philosophy of the Free Software movement. From this version onwards, Qt will not be available under LGPL version 2.1 anymore. Instead, Qt will be licensed under two main licenses: LGPL version 3 (and GPL version 2) for all almost all frameworks and libraries, and GPL version 3 for our tools like e.g. Qt Creator. In addition, we’re open sourcing some formerly closed Qt add-ons and tools under GPL version 3.

Please check our our licensing pages or the licensing FAQ for all details around this. You can also have a look at my blog post from January where I announced this change.

Unifying Qt for Application Development

The license change gives us a unique opportunity to unify our Qt for Application Development offering between the Open Source and Commercial versions. Starting with Qt 5.7, both packages come with exactly the same content.

This means that all the parts of Qt for Application Development that previously have been available only to commercial users are now available in the Open Source package as well.

This includes the following modules:

The only exception is the Qt Quick Compiler where we need some more time to finish the required changes to be able to support this feature in the Open Source Edition.

 

Qt Virtual Keyboard - Now available for GPL Qt users as well!

Qt Virtual Keyboard – Now available under GPL!

 

Qt Charts

Qt Charts

C++11

It has been possible to use a C++11 compliant compiler together with Qt (and thus use C++11 in your application) for many releases. But Qt itself didn’t make use of it except for some integration points in our API.

With Qt 5.6 being a long-term release that we will support for three years, we have taken the opportunity with Qt 5.7 to start modernizing our own code base. As one of the core strengths of Qt comes from it being a C++ framework, we want to follow the progress of modern C++ more closely.

Starting with Qt 5.7, we will require a C++11 compliant compiler to build and use Qt. This allows us to use many of the new features in Qt itself, and renew our codebase using features such as constexpr, move semantics, range-for and auto. These efforts are well under way and will continue throughout the next versions.

 

Apart from adding previously commercial-only modules to the Open Source version, we also have quite a bit of new content in Qt 5.7.

Qt 3D

We want to provide you the tools to create the required WOW-effect to amaze your end users. Modern UIs in many areas require the integration of 3D graphics, or even creating the whole user experience in three dimensions. In past years we’ve been improving our developer offering to make it easier for you to add this dimension into your UIs. With Qt 5.7, we are bringing in the Qt 3D module. This module has been available as a Technology Preview for two releases now, and I’m happy to announce that it has now reached the state where it is becoming a fully supported member of the Qt family!

Qt 3D complements the 3D GUI offering of Qt consisting of integration to OpenGL, Qt Canvas 3D, and Qt Data Visualization modules. Qt 3D provides you with a 3D engine, that comes with both C++ and QML APIs. It makes it a lot easier to embed and handle 3D content within Qt Applications. In general, Qt 3D is much more than just a renderer, it serves as an extensible 3D framework for all kind of simulations. The architecture and most of the development on Qt 3D over the past years has been done by our partner KDAB, a huge thanks goes to them for their work. For a proper introduction, please see the guest blog post from Sean Harmer from KDAB.

Qt Quick Controls 2

Qt 5.7 also comes with a fully supported version of our new Qt Quick Controls, the library of QML-based UI controls. Qt Quick Controls 1 were targeted at the desktop, and came with all the bells and whistles required for desktop applications. This implied an overhead that often made them too slow for usage on embedded devices.

Qt Quick Controls 2 solve these issues. They have been built from the ground up with performance and memory consumption in mind. So while they are fully usable on the desktop, they have slightly more limited functionality and e.g. don’t come with native styling integration. But they are vastly faster, and use a lot less memory than the old controls, making them ideal for many embedded and mobile solutions. Qt Quick Controls 1 are still part of the offering and a suitable API for desktop development. For instance, the Qt Quick Layouts work nicely with both of the control sets.

 

Architecturally, Qt Quick Controls are based on templates that allow you to create your completely own set of controls ground-up. They also come with a flexible system that allows the rapid creation of custom styles and user experiences. In addition, the existing controls come with three predefined styles:

  • Default style – a simple and minimal all-around style that offers the maximum performance
  • Material style – a style based on the Google Material Design Guidelines
  • Universal style – a style based on the Microsoft Universal Design Guidelines

For a good overview, more details and a teaser video, please see the blog post from J-P Nurmi.

New functionality in existing modules

A lot of new functionality has been added to existing modules, and this blog can’t cover them all. Some of the highlights are:

Qt Core

  • Qt uses poll() instead of select() in it’s event loop allowing for more than 1024 file descriptors
  • Qt now uses std::atomic for it’s atomic classes

Qt Gui

  • NEON optimizations for image scaling in Qt Gui
  • Optimized the OpenGL function wrappers in Qt for size and speed

Qt QML and Quick

  • JIT support for WinRT, and 64bit ARM platforms in Qt QML, leading to much better QML performance on these platforms
  • The debugger now supports debugging multiple QJSEngine instances at the same time
  • Improved profiler and inspector integration

Qt WebEngine

  • Qt WebEngine is now based on Chromium 49 and can now print to PDF
  • Support for DRM-protected HTML5 video in WebEngine

Qt NFC

  • Support for Android

For all the details, please have a look at our New Features page and the Changes file for Qt 5.7.

Qt for Device Creation

Also Qt for Device creation has received an update and does now ship with Qt 5.7. In this release, we added out of the box support for a set of new hardware:

  • The NVIDIA DRIVE CX boards (Tegra X1, 64 bit ARM)
  • The Rasberry Pi 3 (32 bit mode)
  • i.MX7 based devices (without GPU, uses the Linux framebuffer and the Qt Quick 2D renderer)

Microsoft Windows is now a fully supported as a host platform for developing for embedded Linux. While Qt for Device Creation 5.7 does no longer support Windows Embedded, we now have full support for QNX, including pre-built binaries.

To read more about changes in Qt for Device Creation, please see the separate blog post.

Qt Creator 4.0

Qt 5.7 ships with Qt Creator 4.0, more precisely with the new Qt Creator 4.0.2 version. Qt Creator 4.0 is a full development environment for all desktop, mobile and embedded development and now with version 4, we’ve especially emphasized the designer-developer workflow with the integration of Qt Quick Designer visual layout editor and the new Qt Quick Controls 2. Together, they provide a really nice way to rapidly create touch-based UIs for your embedded and mobile applications. Check out the separate video about the workflow from this blog post.

Qt Creator 4.0 also comes with a set of nice new features, such as Clang integration and extended QML profiler, please find the details from the Qt Creator 4.0 blog post. For the updates regarding Qt 4.0.2, please see the change files.

New Technology previews

In addition, Qt 5.7 also adds a couple of new modules as Technology Previews.

The first one is the Qt Wayland Compositor. The module makes it very easy to create your own Wayland Compositor. This is especially useful for embedded devices that require multi process support. The module has existed as unsupported technology for some time, but has had issues in both the API and implementation. With Qt 5.7, we’ve invested a lot of time and effort to clean up implementation and stabilize the API. It now comes with a full QML API and an improved C++ API with a lot of convenience. We also added a convenience API to create Wayland extensions and use them from both QML and C++. You can read more about it from the blog post from Paul.

The next new module is Qt SCXML. It’s a completely new module that makes it very easy to integrate SCXML based state machines into Qt. It builds directly on top of the Qt Statemachine framework and extends it with with both a SCXML to C++ compiler and a runtime that allows loading SCXML based state machines.

Qt Gamepad is another nice small addition. It makes it possible to ingrate gamepad support into both C++ and QML applications. It currently supports Windows, Linux, Android and iOS.

With Qt for Device Creation, we’re also introducing the first preview of Qt-based Over-the-Air (OTA) updates mechanism. For an overview of this crucial IoT-technology, please see the blog post from Gatis.

Finally, Qt 5.7 also includes a technology preview of the new Qt SerialBus module that allows you to use Qt APIs for device bus communications and protocols. It’s a generic API, but with this version it includes implementations for CAN and Modbus.

Go and get it

Finally, I’d like to give my thanks to everybody who has helped create this release. Again, a special thanks goes to KDAB for its tremendous work on Qt 3D.

You can get Qt 5.7 from your Qt Account or the download page on qt.io.

For an overview of the Qt 5.7, you can take a look at the release page, or for more details check the change files and known issues.

Enjoy the release and have a great, Qt-filled summer!

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

Posted in Biz Circuit & Dev Loop, News, Qt, Releases

65 comments

Malek Khlif says:

Good Job. Thank you for this release .

Danny says:

Good news.

“Starting with Qt 5.7, we will require a C++11 compliant compiler to build and use Qt”

How strict is this? Visual Studio 2015 is not even 100% C++11 compliant yet.

“Qt now uses std::atomic for it’s atomic classes”

Is Qt going to shift towards using std classes for it’s contains? Will QList et al be deprecated in the same way that the Qt algorithms (qSort etc) where ?

“Qt WebEngine is now based on Chromium 49 and can now print to PDF”

I chuckled at this. OSX introduced print-to-pdf support for all applications back in 2001. Do people still create PDFs?

Lars Knoll Lars Knoll says:

VS2013 is the minimum compiler requirement. That we use std::atomic is mainly an implementation detail, the QAtomic API remains unchanged and continues to be fully supported.

Khalil Ahmad says:

how to fix this error Invalid property name “visible”. (M16). when creating Qt quick 2 controls application. It was in Qt 5.7 RC and still present in the final release. How to fix it?

Thomas Hartmann says:

The Patch for this did not make it into the final. You can add Import QtQuick.Window 2.2 before the Controls import to fix it.

Massimo Costa says:

I confirm that import QtQiuck.Window 2.2 works

Khalil Ahmad says:

Thanks it Worked.

Bernd Gehrmann says:

Really?

http://doc.qt.io/qt-5/windows-requirements.html says:

“If you require a complete development environment that includes compilers and a build environment, you can download Visual Studio 2012 Express, which includes the appropriate components of the Windows SDK.”

John says:

You knew that VS2015 would build Qt 5.7 before you posted your question, but you just HAD TO TAKE A STAB at it didn’t you? Stop trolling.

Joe says:

The only C++11 feature missing from Visual Studio 2015 is Expression SFINAE. Update 1 & 2 had partial support; full support is supposed to come with Update 3.

Frankly, I wish Qt had gone for C++14 compliance with C++17 which is common to the Clang, GCC and VS 2015 Update 2 (such as filesystem.)

Leandro Cerdán says:

Great job, guys! Keep it up!

Nikita Krupenko says:

Qt Quick Controls 2 is awesome! Performance is significantly higher, than with Controls 1, especially on mobile devices.

If anybody interested in real-world examples of usage, there is already available open source application with interface on Controls 2: https://github.com/g-timetracker/g-timetracker

J-P Nurmi J-P Nurmi says:

Hi Nikita, big thanks to you for all the feedback and contributions you have provided along the way! You have been an extremely valuable early adopter. The Material style would not be as polished without your help. It’s great to see the controls already being used in real world apps.

Nikita Krupenko says:

Thanks! Glad to know, that my contributions is useful 🙂

Borgar says:

Great news! Keep up the good work guys! One question: When will the vs-addin for Visual Studio 2015 be ready?

Alex Blasche Alex Blasche says:

The VS Add-on work is progressing well so far. We hope to be able to release it this year. The best way to monitor the changes and progress is to watch https://bugreports.qt.io/browse/QTVSADDINBUG-404.

Rp says:

Tried to update using the MaintenanceTool, but keep getting network error. I’m pretty sure my network is ok.

Ricardo says:

Same problem. Linux machine.
“network error while downloading updates.xml” connection close.

Guess a lot of people trying to update, and the servers are very busy.

@Ricardo: Yes, it is likely that servers are quite loaded at the moment (especially in the open-source distribution system). Also it is possible that not all mirrors are yet in sync, although this time we did have quite a lot of time for things to sync before announcing the release.

Rocky says:

This save my days – realy works, and shuld be included in instaler/maintrance tool – https://forum.qt.io/topic/43349/slow-downloads-with-the-online-installer-try-this-tool

sap says:

another great release, Digia was the best thing to happen to Qt, keep up the awesome work guys.

B Davis says:

Are the changes made for Qt 5.6.1 found in this release?

Kai Koehne Kai Koehne says:

Yes. This is also mentioned in the ChangeLog.

B Davis says:

Great thanks I was trying to find a document like that

Daniel says:

Good job as always.

Another Fan says:

Splendid! Many thanks for moving to the GPL3 family of licenses. And the C++11 related changes are icing on the cake.

And please do keep doing the great work you folks are doing.

Albert says:

Thank you for the great job!

Thiago says:

Since 4.0.0 I can’t use qtcreator with a brazilian keyboard, deadkeys are not working 🙁

mark says:

Hey Lars Knoll,

Please don’t forget to the language bindings for “scripting” languages. Python probably has it easier than Ruby since there are not many C++ people in Ruby investing time into writing/maintaining QT-based projects.

While there are bindings, and these tend to work, the maintainers tend to lag behind.

I am aware that this is a low priority issue for the qt core devs, but for me as a semi-developer, being able to use GUIs in a scripting language is very, very helpful.

Lars Knoll Lars Knoll says:

Hi Mark,

At least on the python side there currently is some work ongoing, where our aim is to make sure pyside works out of the box with new Qt releases.

Marco Piccolino Marco Piccolino says:

Sounds great. Also, having full qmake and Creator support for this would be a life-saver!

Nikita Krupenko says:

What changed in Qt NFC support on Android?
In Qt 5.6 it’s stated that Android support already added:
https://wiki.qt.io/New_Features_in_Qt_5.6
https://blog.qt.io/blog/2016/03/16/qt-5-6-released/

Sassan says:

Hey Lars,

Thanks for this great release, I really appreciate your work (since 2005 era) however there are some issues with this release. I found these:

It seems that there’s no way to use OS’s native menubar in this release:

https://www.dropbox.com/s/byk6hjf7za4zmma/Screenshot%202016-06-17%2008.07.11.png?dl=0

It’s inside an ApplicationWindow, it used to work with `QtQuick.Controls 1.*`

And there’s also a minor issue:
https://www.dropbox.com/s/lq5dul9jk0tlgiz/Screenshot%202016-06-17%2008.08.27.png?dl=0
When I run it there’s no error raised by compiler about these property but QtCreator highlights it as error (the red indicators in screenshot)

Sassan says:

It’d be great if you could prepare a more detailed documentation for porting from QtQuick.Controls 1.* to 2.0.

J-P Nurmi J-P Nurmi says:

Hi Sassan, we’re adding support for native platform menus, menu bars, system tray icons, and standard dialogs in Qt 5.8. The issue you mentioned with Qt Creator has been fixed in Qt 5.7.1. Meanwhile, you can avoid the error highlight by importing QtQuick.Window 2.2 before importing the controls. Sorry for the inconvenience.

Sassan says:

Thanks for info. Is there anyway I can use features in Qt 5.8 (particularly MenuBar) now or should I wait?

@Sassan: You can pull from the dev branch the code that will eventually become Qt 5.8. Using these items that are under development is not recommended, but you can try things out and give feedback. Also note that many of the features are developed in a separate branch(es) and not necessarily merged yet to dev.

Sassan says:

I see, thanks for the info. It reminds me the old days back in 2006 when I spent hours and days compiling Qt code base with different options and for different environments. I guess it’s better for me to just wait for 5.8 and then upgrade my QQC to 2. But I saw the features and style of QQC2 and it was fantastic, great job guys.

Sassan says:

Is it considered anti-pattern if I use QCC1.* for my ApplicationWindow and QCC2 for other components I build which are used in the ApplicationWindow?

J-P Nurmi J-P Nurmi says:

No, it’s not considered an anti-pattern. Originally, the QML engine wasn’t designed to handle two major versions of the same import at the same time. We’ve spent a lot of effort making it possible to mix and match the two control sets. So it’s quite the opposite, we specifically wanted to enable that use case.

Sassam says:

Great, the best thing about Qt is that it just follows intuition, no blocking rules. If something is considered anti-pattern in Qt development, it’s not because core developers are lazy to support it, it’s because it’s just “logically” anti-pattern. I love your architecture and appreciate the effort you put on the project to keep it intuitive. I hope you always have big customers that pay you good so that you can always continue this great project and keep it perfect.

chris says:

thanks for all this

any idea about when/if mingw64 binaries will be supported?

Jani Heikkinen Jani Heikkinen says:

There has been discussions about replacing mingw 32 bit one with mingw 64 bit at some point but nothing agreed yet. We cannot increase amount of pre build binaries so delivering both isn’t an option and that’s why we need to agree correct release for doing that. maybe you could raise a discussion in development ml?

hlide says:

32-bit Windows is meant to disappear. Trying to keep mingw32 instead of embracing mingw64 sounds more like a retarded or lazy solution.

DavidB says:

Question about going to polling instead of using select.

At the benefit of allowing more then 1024 file descriptors does have a cost of causing more cpu usage (and draw more from the battery) then using select.

If one has an application that just uses a few file descriptors are the benefits still there for poll.

What is the polling period, is it dynamic, can it be set by the developer to tune for their application and platform.

Any information about this change to poll is very much appreciated.

Thank you

JackD says:

They are not using polling; they are using the poll(2) system call. Despite the name it has nothing to do with polling.

ekke ekke says:

THANKS to the UI team creating beautiful new Qt Quick Controls 2 🙂

Now I’m able to develop good looking and performant mobile apps with Qt.

As a 4+ years BlackBerry 10 Cascades Apps Developer coming fromthe ‘outside’ it’s not so easy to start mobile app development with Qt.

To help others I’m writing a blog series and to see Qt Quick Controls 2 in-action I’m providing example apps for Android / iOS: see topic ‘Demo Apps’ here: http://j.mp/qt-x

@ekke: Thanks Ekke, much appreciated. You are also welcome to sometime write a guest blog here, if you like.

ekke ekke says:

sure – thx for the offer. will come back to you later 😉

J-P Nurmi J-P Nurmi says:

Hi ekke, I would also like to take the opportunity to thank you for the amazing work you have done with the series of blog posts, presentations, and articles! It’s very much appreciated how you have promoted the controls and provided valuable feedback to help us getting the controls in shape and ready for prime time.

HGH says:

The maintenance tool failed to remove Qt 5.6 examples and docs. Now it want’s to update them

Jani Heikkinen Jani Heikkinen says:

Please write a bug report with all details about this issue, thanks.

Zack says:

Great release! Amazing job, you should be very proud of it. If you still have my skateboard at the office you should put it on the pool table behind you to ramp up the production value. I love the videos introducing new features but somebody please smile because I feel like I’m watching hostage negotiations “Qt uses modern c++… can Simon now go free?”. Blink in morse code if you need Snapple Icetea at the office.

sunmi says:

so impressive! I want to use new feature on Qt 5.7.

Alan says:

I wish I could upgrade to Qt 5.7, but I can’t (due to Qt WebEngine having replaced Qt WebKit). So… what about those of us who have no choice but to use Qt 5.5.1? Can we ever expect a Qt 5.5.2 version that fixes known issues (e.g. QTBUG-46882)?

Jani Heikkinen Jani Heikkinen says:

Hi. Unfortunately there won’t be Qt 5.5.2 release, sorry. Hoping you could port your code to use QtWebEngine or then you can compile QtWebkit by yourself. QtWebKit sources can be found from git or from http://download.qt.io/community_releases/ (5.6/ or 5.7/ )

Fred Morkel says:

Hi. Charts/Data Visualization are missing from the final version? Or am I missing something!? 😉

@Fred: They are included in the release, but not installed by default. In the installer, you need to select these to be installed.

Fred Morkel says:

So, I was missing something… Thanks!

Carlos says:

GtkStyle is removed, which makes all 5.7 compiled Qt apps look non-native on most linux/unix desktops. This also applies to QtCreator 4.0.2 installed via official Qt-Everywehre-Installer. I know that desktops are not the hot new thing anymore – but a lot of developers are using QtCreator on linux/gtk based desktops.

Quote from [1]
> > > Also, please keep in mind that the GTK+ style will be removed in Qt 5.7,
> >
> > Do you know why that is going to happen?

> Basically GTK+ 2.x is going away, and because the whole styling model changed
> in GTK+ 3.x, the only way of porting QGtkStyle to GTK+ 3 is a complete rewrite
> of it (which nobody volunteered to do).

[1] https://lists.debian.org/debian-qt-kde/2016/04/msg00219.html
[2] https://codereview.qt-project.org/gitweb?p=qt%2Fqtbase.git;a=commit;h=899a815414e95da8d9429a4a4f4d7094e49cfc55

Knobtviker says:

HI,
I have been cross compiling 5.6 to run on RPi3.
How exactly do I install supported 5.7 now?
Or do I cross compile it too?
Also, I don’t install and run Qt Creator on RPi3 but on my Ubuntu machine, so a Kit should be created for the target?
This might seem like beginner questions but I’d like to stress out I’m using Qt from the ancient forgotten days of Symbian. 😀

Thank you very much for the previously commercial packages. Really, thank you.

Alex says:

I built a 5.7.0 for Raspberry Pi 2 + eglfs. An error has occurred:

[0621/125716:ERROR:browser_main_loop.cc(217)] Running without the SUID sandbox! See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox_development.md for more information on developing with the sandbox on.
[0621/125716:ERROR:surface_factory_qt.cpp(68)] Failed to load /opt/vc/lib/libEGL.so.1: /opt/vc/lib/libEGL.so.1: cannot open shared object file: No such file or directory
[0621/125718:ERROR:gl_surface_qt.cpp(414)] Trying to create surface with invalid display.
[0621/125718:ERROR:command_buffer_proxy_impl.cc(201)] Failed to initialize command buffer service.
[0621/125718:ERROR:webgraphicscontext3d_command_buffer_impl.cc(210)] CommandBufferProxy::Initialize failed.
[0621/125718:ERROR:webgraphicscontext3d_command_buffer_impl.cc(229)] Failed to initialize command buffer.
[0621/125718:ERROR:gl_surface_qt.cpp(414)] Trying to create surface with invalid display.
[0621/125718:ERROR:command_buffer_proxy_impl.cc(201)] Failed to initialize command buffer service.
[0621/125718:ERROR:webgraphicscontext3d_command_buffer_impl.cc(210)] CommandBufferProxy::Initialize failed.
[0621/125718:ERROR:webgraphicscontext3d_command_buffer_impl.cc(229)] Failed to initialize command buffer.

Under 5.6.1 it worked perfectly.

okh says:

Great job, but I can’t update to Qt 5.7 because of QTBUG-52490.

Hadunan says:

Thanks for another update. But I discovered problems with the graphical style of widgets: It seems the default operation system theme won’t be used any longer as default theme for the qt elements. I discovered this by compiling my small application, developed with Qt 5.5 and Creator 3.x!
The main problem here is, that the QFileDialog doesn’t provide the default folder bookmarks from the system any longer, like it doesn’t know they exist. This was the reason for me to go back to Qt 5.5 and Creator 3.x as long as these problems remain.

Tham says:

Download Qt5.7 and give Qt data visualization a try, so far so good, but there are one thing confusing me, how could I set the color of specific bar?

Commenting closed.

Get started today with Qt Download now