QT for Embedded Linux Applications
Qt is an application development framework based on C++. Qt is also supporting script-based declarative programming with QML. The toolkit simplifies many aspects of C++ development, introducing lots of powerful APIs and tools for creating either GUI or headless applications.
We are using various versions and variants of QT libraries in our projects and we strongly advise our customers to apply them as well. This is why we decided to introduce an in-depth QT course with a strong emphasis on embedded applications (both: GUI based and headless).
Detailed agenda
Training agenda is based on trainers practical knowledge gathered while developing a QT based applications for HMI (control devices in plastics industry) as well as medical devices and laboratory equipment.
QT 6.X is used as a main version of the library. The emphasis is put to the features available i LTS (Long Time Support) versions of the libraries.
Part 1 (8h)
- Fundamentals of Qt: the background of Qt, versions, licenses,
- Integrating QT in Yocto Project
- developing simple applications
- QT tools:
qmake
, moc
, uic
, etc.
cmake
- QT cross-compilation, Qt Embedded: introduction, embedded setup,
- Configuration of work environment: using Qt Creator, using Eclipse, practical tips for developers.
- Font optimization, QVFb, VNC and other tools
- Objects in Qt: common features of Qt's object models, object communication using signals and slots, signal and slot variations, handling events in Qt
- Core Classes: string handling, item container, file handling, variants, XML handling
- Widgets: common widgets, layout management, guidelines for custom widgets
- Painting and Styling: painting on widgets, color handling, painting operations, style sheets, layout
- Application Creation: main windows, settings, resources, translation for developers, deploying Qt applications
- Dialogs and Designer: dialogs, common dialogs, Qt Designer
- Qt Embedded Adaptation specific: display management, pointer handling, key handling, window decoration, feature configuration, performance tuning
- Inter-Process Communication: running processes and threads, shared memory with Qt, QtDBus - Qt bindings to D-Bus
- Model/View and other design patterns: Item Widgets, Model/View Concept, Custom Models, Item Views, abstract state machine
- QT Debugging, development tools for Linux.
After Part 1
After completing this part, participants are ready to choose, plan and deploy QT in both: GUI and headless applications. Knowledge gained is applied to PC application development and embedded project.
Part 2 (16h)
- QML - creating modern responsive GUIs
- Concurrency: multithreading - concepts and implementation, QtConcurrent, advanced concepts
- Multi-touch in user interface: starting Multi-touch, touch Events
- Graphics: using GraphicsView classes, transformations and coordinate systems, creating custom items, animation
- OpenGL ES integration.
- Qt Multimedia and underlying software (GStreamer)
- Network programming,
- HTML rendering: Qt WebEngine
- QSettings - storing application settings
- Internationalization
- Embedded Linux System debugging and profiling:
gdb
, strace
, ltrace
, perf
, ltt-ng
. Performance optimizations. Visualizing multi-threaded program flow using ltt-ng
and Eclipse.
After Part 2
During this part of the course, advanced QT related subjects are introduced. Exercises are build around creating graphic-reach QWidgets and QML applications. During course, a complete QT based GUI application is build, profiled and debugged. HMI controlling some simple emulated process is used as an example.
After the training, participants will be ready to develop custom QT/C++/QML based applications and understand its internals and underlying Embedded Linux system. Debugging and system profiling will be covered as well.