• Author
  • Recent Posts
Javier Bonilla
Researcher at
CIEMAT – PSA PhD. in Computer Science / Solar Thermal Energy Researcher
Latest posts by Javier Bonilla
(see all)

  • Flutter on Raspberry Pi with flutter-pi – 26 November, 2019
  • ESP8266 NodeMCU pinout for Arduino IDE – 19 November, 2019
  • Cross-compile and deploy Qt 5.12 for Raspberry Pi – 17 November, 2019

This is a brief post that aims to define and clarify the main Qt 5 framework technologies and tools, where terms such as QML, Qt Quick, Qt Creator and Felgo are introduced.

Photo by Ian Schneider on Unsplash


  • Qt framework
  • QML – Qt Meta Language
  • Qt Creator Integrated Development Environment (IDE)
  • Felgo
  • Cool! how do I start?

Qt framework

Qt is a cross-platform framework for creating apps for desktop (Linux, Windows & macOS), mobile devices (iOS, Android, Windows Phone) and embedded devices (Raspberry Pi, etc). It is developed by the Qt Company. Qt has a rich set of ready-to-use multi-platform modules for diverse areas such as: multimedia (Qt Multimedia), network and connectivity (Qt Network, Qt Bluetooth, Qt NFC, etc.), graphics (Qt Widgets, Qt Quick, Qt Quick Controls, Qt OpenGL, etc.), input methods, sensors (Qt Sensors), data storage (Qt SQL, Qt XML, etc.) and much more.

Have a look at the list of Qt modules to see all the available modules. Qt documentation is really good. You can get there detailed information about modules, classes and even practical examples.

Qt libraries are programmed in C++ and traditionally this was the only programming language supported by Qt. However, nowadays the Qt framework can be used in C++, QML together with Javascrypt, and Python.

The Qt framework is dual-licensed under commercial and open source licenses. With respect to the open source licenses, the core of Qt is currently licensed under GPLv3 and LGPLv3. Some modules are only offered under GLPLv3 (such as Qt Charts, Qt Data Visualization, etc.) and there are some tool only offered in the commercial license (for instance Qt for Automation and Qt for Device Creation). Have a look at the list of Qt modules to see under which terms they are licensed.

Classic desktop-style application can be develop in Qt with the Qt Widget module and C++. Alternatively, the Qt Quick module can be used to design more mobile-friendly and fluent app with QML, JavaScript and even C++ if needed.

QML – Qt Meta Language

QML is a markup language for the design of Graphical User Interfaces (GUIs). It is part of the Qt Quick module. QML was designed for targeting mobile devices, providing a fluid user experience, touch screen capabilities and fluid animations. Nevertheless, QML can be also used to design Desktop applications. Being Qt/QML multi-platform you can design and deploy the same app for desktop, mobile and embedded devices.

QML documents are defined as hierarchical object trees. The logic part in QML GUIs can be programmed in JavaScript and/or C++.

To sum up, the GUI module is Qt Quick and QML is the markup language. It includes a JavaScript runtime to execute JavaScript. You can also integrate QML/JavaScript code with C++ code.

Qt Creator Integrated Development Environment (IDE)

Qt Creator is multi-platform complete and powerful IDE available for Linux, Windows and macOS. We can design apps based on Qt Widgets or Qt Quick modules.


Felgo is a commercial (there is a free personal license) Standard Development Kit (SDK) based on Qt and integrated in Qt Creator. It facilitates the design and deployment of mobile apps.

Felgo is not restricted to mobile devices, so you can test and prototype your app in your development computer changing the target platform (desktop, Android or iOS), which is certainly faster than compiling and deploying your app to emulators or devices.

Felgo adds live code reloading to Qt Quick apps to see changes in code almost instantaneously. Live code reloading is also supported on Android and iOS devices, so you can design your app on any platform (Linux, Windows and macOS) and have live code reloading on Desktop, iOS, Android or any combination of them at the same time. Felgo provides additional QML components and manage the GUI to be resolution and aspect ratio independent of the device.

Cool! how do I start?

Stay tuned to Mechatronics Blog! because each week we’ll be introducing new tutorials to develop QML apps and how to use them in mechatronics: Arduino, ESP8266, IoT and much more.

votes Article Rating