DEV Community

Cover image for Qt for embedded development: the many pros and the few cons
Andrey Solovev for Integra Sources

Posted on • Originally published at integrasources.com

Qt for embedded development: the many pros and the few cons

Cross-platform toolkits allow developers to create applications for multiple platforms. Programmers use software frameworks for quick application design. Toolkits may have compilers, code libraries, and APIs to create software.
In this article, we look at solutions for embedded systems running on Linux/Unix, Windows, and Android.

The Qt framework

Qt logo imageQt logo image

The Qt framework is great for creating cross-platform applications for embedded systems. Embedded applications are most often written in C/C++.

Qt supports various platforms:

  • mobile (Android, iOS);
  • desktop (Windows, Linux, macOS);
  • embedded (Embedded Linux, Embedded Android, Windows Embedded, QNX, etc.).

C++ is an object-oriented programming language (OOP). OOP makes the process of application engineering faster, easier, and safer.

C++ supports the WOCA (Write Once, Compile Anywhere) principle.

License

Qt can be used under commercial and open-source licenses. You can use Qt under an open-source license for projects with an open-source distribution or without ‌an ‌external distribution.

Qt Instruments

Useful modules make this toolkit one of the most convenient for cross-platform application engineering.

Qt Creator is an IDE that eases GUI application design or modification. Qt Creator is applied to building software in C++, QML, and JavaScript.

The Qt Creator screenshotThe Qt Creator screenshot

Qt Creator has a very efficient GUI constructor called Qt Designer. Qt Designer is characterized by support for the visual editing of signals and slots. It can also be used as an independent tool.

Qt Design Studio is a stripped-down version of Qt Creator. It offers a set of 2D/3D instruments for building user interfaces, user experiences, and human-machine interfaces.

The Qt framework offers the QML language for UI application design.

Qt Automotive Suite modules and instruments are in charge of creating in-vehicle infotainment (IVI) systems. The Automotive Suite has the Qt Application Manager in its structure, with a high-level API for easy development of a UI system. The Qt GENIVI Extras module allows designers to combine the product with the structure of the GENIVI automotive platform. The Neptune 3 UI helps build the UI for Qt in automotive infotainment (IVI) systems.

The Qt Interface Framework module contains the tools you need to develop middleware components (APIs, backends, services).

The Qt Safe Renderer module, with its UI rendering element, allows developers to achieve the separation of important interpretations from the rest of the system. In the event of failures or emergencies, this makes it possible to display the most crucial elements of the system.

Other multi-platform frameworks

A lot of solutions can solve the same tasks as Qt. When choosing between frameworks, the developer takes into account his experience and the needs of the project.
We'll take a look at Qt-like solutions and highlight the features of each framework.

Cross-platform toolkits are used for embedded software development.Cross-platform toolkits are used for embedded software development.

.NET, or dotNet, is a Microsoft-owned development platform.

Key features of the platform:

  • open-source;
  • compatible with Windows, Linux, and macOS;
  • C #, F #, or Visual Basic are supported.
  • Visual Studio IDE;
  • It has a large community.

This structure has a wide variety of compilers, libraries, and APIs to develop and compile mobile and game applications easily.

Xamarin is an element of the .Net platform, but it can be used independently. Xamarin is a popular tool for mobile application engineering.

The basic elements of Xamarin:

  • open-source software;
  • uses C#;
  • tools that are natively compiled;
  • The Xamarin Universal Library and Planet Xamarin projects provide developers with important information and useful resources.

Flutter is a Google GUI framework. It supports the WORA (Write once, run anywhere) principle.

The main features of the structure are:

  • Platforms such as Windows, Linux, Android, iOS, and others are all supported.
  • supports the Dart programming language;
  • design-specific widgets.

Frameworks based on Java are lightweight, extensible, and provide easy and quick application development. Java is one of the most popular programming languages.

On the other hand, the Java language is complex and not very efficient in comparison to other languages.

You can use GTK+ for creating GUI programs.

The main features of the widget toolkit:

  • open-source;
  • multi-platform;
  • C is the language used;
  • There are C++, dotNet, and Python bindings available.
  • Good support for powerful themes;
  • compatible with Windows, Linux, and macOS.

The Simple DirectMedia Layer (SDL) is a cross-platform library.

The main features of SDL:

  • open-source (under the zlib license);
  • depending on the target platform, written in C, C++, or Objective-C;
  • There are bindings for other languages available, too.
  • Support for multiple windows;
  • 2D graphics that are hardware-accelerated;
  • It is widely used for cross-platform multimedia programs (primarily games);
  • well-known for its incredible translation features.

C++ GUI toolkits

C++ is a programming language.C++ is a programming language.

C++ developers also have a wide choice of C++ GUI frameworks:

  • wxWidgets is an open-source C++ toolkit. It is mature but rather fast. wxWidgets uses native widgets (where possible) to ensure a natural look and feel; it has a very convenient wxCrafter designer.
  • FLTK supports 3D graphics. This framework has a lightweight and simple design.
  • Supported by Windows, Linux, iOS, macOS, and Android, JUCE has a large set of audio functionalities.
  • Ultimate ++ (U++, or Upp) contains GUI, SQL, and other libraries and focuses on efficiency.

There are a lot of other C++ UI frameworks. Each of them serves different purposes and has advantages. The Qt benefit is the convenience of developing applications for embedded systems.

Why do we choose Qt for embedded systems?

C++ is one of the most widely used languages for embedded devices.

It is a highly stable programming language. That is why C++ applications can run for many years and are well suited to hardware. C++ is a processor-independent language. The C++ data structure is based on algorithms, so it can cope with the challenges that come with developing embedded systems.

Based on C++, Qt provides everything you need to create software for embedded systems in different industries.

Having quite a lot of choices for cross-platform solutions, Integra Sources prefers Qt as a far more suitable framework for embedded systems. Here are some of the Qt qualities that made us choose it.

  • The key benefit of Qt is the ability to use the same code for different desktop, mobile, and embedded platforms.
  • Qt uses a dual licensing model. Integra Sources usually selects an open-source license for projects. Yet, the application design is also available under a Qt commercial license at the client’s request.
  • Detailed API documentation, examples, technical support, and a large community make Qt easy to use.
  • There are many bindings to Qt for other programming languages.
  • The Qt Creator IDE is fast and responsive.

We can note some insignificant disadvantages of Qt and C++:

  • The C++ language is complicated. It is hard for inexperienced designers to learn and use it.
  • C++ may have lacked flexibility for web technologies.
  • The speed of cross-platform applications can be slower than native ones.
  • Cross-compilation may require extra steps.

Qt in our projects

The number of projects in which we use Qt is increasing. Qt allows designers to solve many tasks fast and easily.

Project discussionProject discussion

Our responsibility for one of the projects, related to the marketing and entertainment spheres, was to develop an Android application for debugging and configuring the customer's device. The device had cylinder bottles and was equipped with a spray system. It was controlled via BLE. Our developers had to build an application for device management. Also, a video player had to be implemented. Once the player reached a certain timestamp, the application had to send a command to the device to spray a certain fragrance.

For the application design, we have chosen the C++/Qt/Qml stack. Also, Java code was used. Qt allowed us to build an Android application in the short term. The Qt Connectivity module has accelerated the BLE part’s development with ready-made Bluetooth solutions. Using the Qt Multimedia module, our specialists have created a video player with different functions.

Integra Sources is pleased with the experience of using the Qt framework and C/C++. It helps us save time, and customers save money by getting efficient cross-platform applications. Our portfolio consists of many projects for embedded systems.

Read more about Qt-related projects on our blog.

Top comments (0)