Qt Lite in Qt 5.9 LTS

Qt Lite has been our project name for multiple efforts done to approach to a more scalable Qt version. We introduced this first in Qt 5.8, earlier this year, and are extremely happy to see all the use cases and new opportunities this has unlocked for Qt. It is now far easier than before to build a small and tailored version of Qt for your specific need.

We have added a lot of new configuration options in Qt 5.9 LTS, and updated the corresponding Qt Configuration UI Tool to take this into account. The configuration tool list all the options available, and provides simple and easy access to all the new configuration options. This way, you do not have to learn all the ins and outs of each module, to generate a meaningful and optimized version of that module. For the time being, the Configuration UI Tool is a commercial only tool, that adds value for our Device Creation customers.

There are hundreds of individual configuration options, ranging from major features like OpenGL support, to minor details in Qt. Qt Lite covers features in all our core libraries, Networking, SQL, Qt GUI, Qt QML, Qt Quick, XML, Widgets, Connectivity, Qt Gamepad, Location and Positioning, Multimedia, Sensors, Serialbus, Wayland Client and Compositor, Bluetooth, XML Patterns, as well as Qt WebEngine, and more. Qt Lite thus allows you to disable features that are not used in your application, even though you still want other features available in the modules they have been implemented. Moving away from a completely monolithic approach has been very beneficial, and we hope this can continue to benefit all our users.

One example of this is the implementation of Samegame, a non trivial Qt Quick based game. In Qt 5.6 LTS, the statically linked application and libraries all of 13.8MB, but using Qt Lite configuration options, we are able to create a more than 60% smaller deployable binary with Qt 5.9 LTS.

As Qt continues to grow, and add more features, we see this as an important mechanism of maintaining a framework that will fit with the needs of the embedded industry. In line with this, Qt 5.9 is the first release in which we officially support the new iMX7 architecture from NXP; and without OpenGL and targeted at the wearables market Qt lite provides an excellent way of deploying to this target.

Qt Lite has been happening along two axes, one part focusing on the configuration system of Qt, and the other making other improvements to Qt to make it perform better in a constrained environment.

To that end we are also adding improvements such as the better utilization of optimization flags. Release builds can achieve a significant further reduction in size from 5-20 percent, by utilizing -Os (with gcc/clang) or -O1 (MSVC). This is enabled with the Qt configuration flag -optimize-size.

Together with the work we do to optimize Qt Quick code, the improvements of Qt Quick Controls for embedded targets, the new OpenVG back end for the improved Scene Graph and all the other efforts in Qt 5.9, these improvements make Qt 5.9 the best choice for any new Device Creation project. And on top of that, it will be supported for a long time, as an LTS release. We hope to see all the cool things that you have been doing with it, and that we can make your product development faster, simpler and more fun. If you want to get started with Qt Lite in 5.9LTS, do not hesitate to contact us if you need support or consulting.

This all sounds very nice from the embedded device point of view, but I still have somewhat unclear idea what exactly is the future of Qt in the desktop-oriented side of things.
Is this all applicable to the more ‘traditional’ platforms [win, osx, desktop-linux]?
Is this contained only in the Device Creation licence?
Is the QML/Quick technology promoted as QWidgets successor or merely specific use-case for the embedded world?

I’m currently developing desktop application using QML for the GUI/frontend and C++ for heavy logic/data models and for every nice thing that QML delivers there is something that needs to be hacked-to-be-useful.
Most notorious is fragmentation in features between provided set of controls [QC 1.X / QC 2.X] and lack of adequate implementations of some of the basic QWidget types [TableView’s / TreeView’s and really anything with non-flat data model].
Most of the time I end up rolling my own implementations.

Jakub, I think QML/Quick is not meant as a replacement for Qt Widgets. QML is a very different paradigm, promoting strong model-view separation. I see it as an alternative GUI toolkit that is more suited to embedded and touch-enabled devices.

There’s nothing to stop you from using Widgets in your application. Of course, it depends on your particular use case and QML might be a good fit for you too. Judging from your post and also speaking from my own experience as a professional developer, I think you would be better off using Widgets in your application. Especially, if you target desktop only and you need complex data presentations and complex user interactions.

Thanks for this very good response. I agree, and Qt Quick is not a drop in replacement for Widgets. But I would add that what the desktop paradigm is, is also shifting, and we want to be ready for that. The new Qt Quick Controls is doing an excellent job providing a simple way of creating user interfaces both for desktop systems and embedded devices.

I doubt qml, mobile like app will be the future of desktop too, almost every company try their best to sell their own language very hard, even they know it is hype, they keep going with that. Digia/Qt team cannot escaped from this trend too(look at all those web app hype, how sun claimed java is the best of the best, c# is blah blah blah). After all, this is business

Thanks for your feedback!
This is platform independent, and allows you to create configurations of your Qt builds for any target OS or hardware.
The tooling is limited to the Device Creation for now, but the underlying architecture is available to anyone.
Qt Quick vs. Qt Widgets is a very different discussion, but we have stated many times in many different forums that we are not replacing Widgets, only adding new functionality that deals with the issue of UI creation in a different way.

There are some other blog post explaining the differences are reasoning around QQC1 and QQC2 in more detail, and I would comment on those specific blog posts if you have specific comments, we are a large community and the Qt Quick Controls developers might not read this.
And please make bug reports whenever you find something broken or not working like you expect it to.

You are right, and if I had a good answer to this I would have written it in the blog, I think. We are looking into how we can solve this in the best way. I hope to have a solution for Qt 5.10 at least.