Linux Embedded Systems Qt C++ Programming
Duration: 5 Days
Course Background
Qt is a rich, cross platform capable, framework for implementing powerful Graphical User Interfaces (GUIs). Qt is particularly useful when developing GUIs for embedded, control systems and robotics applications. Qt was developed by a Trolltech which was, for a while owned by Nokia. When Nokia migrated from Symbian to Microsoft Windows as its mobile telephone operating system the commercial part of Qt was sold to Digia and the Qt Commercial was created. Currently there are several versions of Qt ranging from the open source community version through to the Indie Mobile, Professional and Enterprise versions. This course will focus on the open source , Qt Project, version. If required it can be tailored to include some of the features available in the commercial versions.
The Qt Project contains a development tool Qt Quick, that allows the user interface presentation layer to be written in a declarative language called QML. This allows designers to prototype the GUI look and feel. The QML code can then be integrated with C++ code that takes care of low level data processing, data acquisition and control aspects of the application.
Intended Audience
Attendees are expected to have sound C++ programming experience. The purpose of the course is to provide delegates with the knowledge and skills needed to implement sophisticated Qt GUI applications on Embedded Linux Platforms. The course can also serve as an intenstive introduction to general purpose Qt GUI application development. As well as covering C++ Qt programming the course will also cover GUI prototypin using QML and the integration of QML with C++.
This course assumes reasonable familiarity with C++. Detailed knowledge of GUI design and implementation is not required, and relevant guidelines and idioms will be covered on the course. The course will use the GNU C++ compiler and Qt Creator.
Course Contents
- Overview and History of Qt
- Overview and Introduction to Qt Creator
- Introduction to Qt via Qt Quick
- Introduction to Qt Quick and QML
- Keyboard and Mouse input
- Touchscreen Gesture Recognition
- Interface Composition
- Handling User Interactions
- Understanding States and Transitions
- Using QML for Data Presentation
- Qt - Basic Concepts
- SIGNALs SLOTs and connections
- Dialogs and Widgets
- QMainWindow - menus, toolbars and the status bar
- Subclassing Widgets
- Layout Design and Management
- Stacked layouts
- Splitters
- Scrolling areas
- Dock windows
- Multiple Document Interface applications
- Event Processing and Interactivity
- Event handlers
- Event filters
- Drag and drop
- Graphics
- QPainter and 2D graphics
- Overview of OpenGl, OpenGL ES and 3D graphics
- Conversion library
- Item View Classes
- Overview
- Predefined models
- Custom models
- Custom delegates
- Interacting with the underlying operating system
- File Input/output
- Connecting to and querying databases
- Multithreading
- Networking - FTP, HTTP, TCP and UDP based applications
- XML
- Overview of XML and XML document parsing
- Reading XML - QXmlStreamReader
- XML reading with DOM
- XML reading with SAX
- Qt and USB applications
- Using Qt with libusb to access embedded systems USB devices
- Designing GUIs interfacing with USB HID for data acquisition and data control purposes
- GUI based applications for interfacing with USB - I2C, SPI, GPIO adapters
- Qt and RS232 applications
- Overview of Qt Serial Port
- Implementing a terminal based serial port application using Qt Serial Port
- Implementing a GUI based control application using Qt Serial Port over USB CDC to control an embedded USB device
- Qt TCP/IP applications
- Overview of TCP/IP
- Overview of WiFi
- Overview of Qt network classes
- Qt sockets based applications
- Qt WiFi based applications
- Qt and the Internter Of Things
- Overview of the Internet of Things (IoT)
- Overview of Bluetooth
- Qt Bluetooth application development
- Qt GUI application IoT examples