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).
- 4-days (32h)
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
QT 5.7 is used as a main version of the library. New features included in 5.8 will be highlited.
Part 1 (16h):
- Fundamentals of Qt: the background of Qt, versions, licenses,
- Integrating QT in Yocto Project
- developing simple applications
- QT tools: qmake, moc, uic, etc.
- QT cross-compilation, Qt Embedded: introduction, embedded setup,
- Configuration of work environment: using Qt Creator, using Eclipse, practical tips for
- 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
- 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
After this part
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
Part 2 (16h):
- Model/View and other design patterns: Item Widgets, Model/View Concept, Custom
Models, Item Views, abstract state machine
- Application Scripting: Qt Script, Debugging Scripts
- QML - creating modern responsive GUIs
- Concurrency: multithreading - concepts and implementation, QtConcurrent, advanced
- Multitouch in user interface: starting Multitouch, touch Events
- Graphics: using GraphicsView classes, transformations and coordinate systems, creating
custom items, animation
- OpenGL ES (2) integration.
- Qt Multimedia and underlying software (GStreamer)
- Network programming,
- HTML rendering: Qt WebEngine (some cover of older QWebKit and QWebView
- QSettings - storing application settings
- QT Debugging, development tools for Linux.
- Embedded Linux System debugging and profiling: gdb, strace, ltrace, perf, ltt-ng.
Performance optimizations. Visualizing multi-thread program flow using ltt-ng and
After this part
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 deugged. 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.