Facebook EmaiInACirclel
Développement front-end, back-end

What’s the news on Qt? (by Ion P.)

Mickaël Hiver
Mickaël Hiver
Revenue Operations Manager

From our Qt’s expert, Ion P., a short introducing of Qt and the next evolution with Qt 5 :

What is Qt?

Qt (pronounced officially as cute /ˈkjuːt/, though often incorrectly as Q.T. /ˈkjuːˈtiː/) is a cross-platform application framework that is widely used for developing application software with a graphical user interface (GUI) (in which cases Qt is referred to as a widget toolkit), and also used for developing non-GUI programs such as command-line tools and consoles for servers.

It is produced by Nokia’s Qt Development Frameworks division, which came into being after Nokia’s acquisition of the Norwegian company Trolltech, the original producer of Qt. Nokia announced that it is going to drop Symbian technologies and base their future smartphones on Microsoft platform instead in February 2011. One month later Nokia announced the acquisition of Qt’s commercial licensing and professional services by Digia PLC, although Nokia will remain the main development force behind the framework. On 9th May, it was announced on the Qt Labs website that the groundwork was being laid for the next major version of Qt, with the expectation that Qt 5 would be released in 2012.


Qt 4.0 was released in 2005. After 6 years Qt needs to adjust to the huge changes in the market that have happened over the last few years.

A lot has changed in the software industry over these years. While application development back then happened mostly on desktop systems, mobile devices connected to the web have become increasingly popular. User interface technology has moved from static widgets to a fluid touch based experience.

Qt is strong in the Linux embedded platforms, because it creates highly memory efficient devices. Qt runs anywhere Linux runs (see http://developer.qt.nokia.com/wiki/Support_for_Embedded_Linux).

With the support from Nokia, Qt has entered into mobiles devices based on Symbian and MeeGo platforms. With the support from the open source community, Qt has entered now on other successful platforms as Android (see http://code.google.com/p/android-lighthouse/) or IPhone.

Next Evolution

Qt 4 was mainly developed in-house in Trolltech and Nokia and the results were published to the developer community. Qt 5 is planned to be developed in the open, as an open source project from the very start. There will not be any differences between developers working on Qt from inside Nokia or contributors from the outside.

Qt 5 plans to make developer’s creation of advanced applications and UIs easier and faster (with QML and Javascript), with a new way of developing applications. JavaScript will become a first class citizen within the Qt community and the Qt community expects that a lot of application logic and even entire applications will be written in JavaScript instead of C++. What we are talking about here is adding another option, not removing C++. Qt is in its heart a C++ framework and this will not change.

The expectation is that many application developers will actually start out with QML and JavaScript and only implement functionality in C++ when required. For those specific use cases, the full power of the C++ APIs offered by Qt can be used to implement time critical and complex application functionality. JavaScript fits in naturally here, as QML is syntactically an extension to JavaScript. Being able to write or prototype parts of developer’s application logic in a scripted language makes many things easier.

Qt 5 will separate all QWidget related functionality into its own library. While the QWidget based classes are extremely important for existing applications, Qt community moves to a model where all UIs are being done in QML. Separating the QWidget based functionality into its own library is therefore a good measure to achieve a clean architecture in Qt 5 in the long term.

As the last big change Qt community will re-architecture most of Qt’s graphics stack to be fully optimized for QML, allowing for smooth touch based user interfaces.

Qt5 will require OpenGL (ES) 2.0 to work. The reason is simply that this gives a much better common ground for application developers. It also helps to significantly simplify Qt 5’s internal architecture.

The challenging ground for Qt is low end hardware/embedded systems without a GPU. Qt community is seeing that these systems are going away fast and that the price different between SoC’s with and without GPU is becoming very small. Given the great advantages a GPU offers to the achievable user experience and the fallback option to software GL (Mesa with llvmpipe), Qt community believes it’s better to bet on OpenGL here as well.

One major change in Qt 5 will be how to integrate into different windowing systems. The Lighthouse project was started with the goal of providing a better way to abstract the window system integration than Qt is currently using. It’s now reaching maturity with Qt 4.8, and Qt community intends on using it exclusively for all Qt ports in Qt 5.0. The lighthouse abstraction layer has proven to be a better way to abstract windowing systems then Qt’s old approach using _foo.cpp files.

As Qt 5 will have a broader focus than Qt 4 which was mainly targeted at the desktop operating systems, Qt community will separate out many of the components only required for the desktop into its own library.

Qt source code is now migrating to a modular repository structure. Many of the changes Qt 5 is going to do are about restructuring its code base into a new modular structure where every shared library lives in its own repository. A lot of this work has been done over the last weeks and Qt community can see the results in the new modular Qt repositories (see http://qt.gitorious.org/qt).

The modularization of Qt repository structure will facilitate and speed up the possibility to integrate contributions to Qt. Qt community will remove a few very rarely used APIs where a compatibility requirement makes some required changes impossible.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *