Software DevelopmentTechnology

Qt Embedded Application Development

Introduction

Qt-icon
We have been using the Qt cross platform application framework for more than a decade on various different cross platform projects ranging from desktop applications to resource constrained embedded applications. While Qt is generally known as a cross platform user interface GUI framework, it is in fact a very mature C++ framework for developing both embedded and desktop applications in native code. Native code developments are especially important for higher performance on resource constrained embedded platforms and perform better than higher level interpreted language developments as with C# and Java. We have a recent development experience for a customer on this specific point when running a C# based application using Mono for embedded Linux on an embedded platform.

Web User Interfaces, REST APIs, and Security

We have used Qt for both embedded and desktop applications, but more typically for our embedded applications, we develop headless applications running under embedded Linux. These headless applications provide a web interface as the user interface (UI) to the application, and a REST API interface for upstream control and status. These applications include a single tier web server developed in Qt that provides support for the HTTP/S protocol, AJAX PUTS and GETS, REST API support, and security based on basic browser authentication with role based page read-only and read-write access.

Touchscreen User Interfaces

In addition to headless applications, we have used Qt on several touch-screen UI based implementations, which most recently includes an Android-like fluid touch-screen interface build using the Qt widget toolkit for the manufacturing test industry. This application was developed using QtWidgets, and provides a touch screen interface for an embedded instrument with a modern cell phone fluid interfaces including touch screen control, swipe navigation, rich multi-line list controls, embedded keyboards, pop up context menus, icon based selection screens, animated scene transitions, over scroll animations, international language support, kinetic scrolling, and real time 2D line graphing with auto-ranging, auto-scaling, and data decimation.

Development Languages: Native versus Interpreted

C++ as a language, is the industry preference for high performance systems on resource constrained embedded systems that need to execute real time applications. Relative to high level interpreted languages such as C# or Python, it takes much more hand coding in C++ because the language itself does not contain inherently a full framework such as with .NET. To increase software development productivity in C++, developers take advantage of a multitude of C++ libraries that are available — many of which are open source.  C++ in general as native code executes 20 to 30 percent faster than managed C# code implementing the same functionality.

Custom Libraries

Historically, we have worked for large companies that developed their own C++ libraries for their custom products to increase software development productivity. Unfortunately, custom C++ libraries require corporate resources to maintain, document, fix bugs, and add features.

Conclusion

Qt is mature and stable and has a large user base that is always fixing bugs and adding features. There are hundreds of commercial cross platform applications developed in Qt including Wolfram Mathematica and the Linux KDE desktop, as well as embedded devices. We have found that Qt is the best designed and supported C++ framework for both our embedded and desktop developments. It is stable on all major platforms and works on both embedded and desktop platforms.

It is far more than a GUI framework, it provides a cross-platform way of creating real time reliable applications that execute across various hardware platforms and operating systems. It is a complete mobile and embedded development platform based on the open source Qt toolkit. It is designed with a modular architecture that provides building blocks for assembling a Linux-based software stack for various embedded devices ranging from phones to set-top boxes. Qt is used across multiple industries including industrial automation systems, enterprise applications, medical, aerospace and defense, oil and gas, entertainment, in-vehicle infotainment, TV and set-top boxes, mobile and consumer devices.  Qt was used for our low latency scheduling framework.