Costs and benefits of switching from Qt C++ widgets to QML
Qt is a widely used, versatile, open source UI toolkit. It is used in many open source applications (KDE, Scribus, Unity, Gcompris) and closed source applications (e.g. Google Earth, Autodesk Maya and Adobe Photoshop Elements). Qt allows developers to write cross-platform applications quickly, because it abstracts all platform peculiarities away.
The original Qt is written in C++, where all UI components are C++ classes. Language bindings to many other programming languages exist. However, the original architecture proved to be too limiting. That’s why QML was developed, a new Qt programming paradigm and language.
QML is a declarative language, identifying relations between components instead of specifying behavior in step-by-step rules like ‘normal’ programming languages. QML is very powerful, often reducing a large amount of C++ UI code with a very limite amount of QML. It also allows a very clear separation between Model (in C++) and View and Controller (both in QML).
Switching over from Qt C++ Widgets to QML is not trivial: one needs to learn a new language with a very different paradigm and rewrite all UI code. This is a costly effort.
Open Source physics puzzle game “The Butterfly Effect” was originally written using Qt C++ Widgets and the QGraphicsView framework. However, both users and developers expressed a dissatisfaction with the user interface. Summer and Fall 2016 saw a redesign of the UI in Qt QML.
This presentation will cover the reasons behind the switch from C++ Widgets to QML, the efforts and costs involved and the benefits – including some serious code size reductions.