Programming with Qt for Embedded Devices
Location: Bedford, MA
Early Bird Pricing: $2495*
Regular Price: $2995*
Course Description
This 5-day course focuses on developing modern applications for embedded systems and touchscreens using Qt and QtQuick. The class utilizes real development boards with touchscreens for each participant and introduces students to working with embedded touchscreen systems. Further, fundamentals of programming with Qt will be covered to give participants a thorough understanding of the underlying ideas of QML and QtQuick. Efficient and robust design of applications for touchscreen enabled devices utilizing the latest QtQuick techniques is the central focus of this class. As such, architectural considerations for creating applications consisting of beautiful and highly responsive presentation layers, backed by solid back-end implementations are important learning goals for participants.
In the course, we will use the Raspberry Pi embedded system and a multi-point touchscreen. After the class, you may keep the board and touchscreen for a discounted fee of $172.50 plus tax. This is optional and we will loan you a touchscreen and board at no extra charge if you prefer.
Course Availability: On-site, Open Enrollment
Subject: Qt
Duration: 5 days
Course Prerequisites
- Working knowledge of C++ programming
- Basic knowledge of GUI programming
- Previous Qt experience is not required
Course Outline
Qt Fundamentals
- Core Classes
- String Handling
- Container Classes
- File Handling
- Command Line Parsing
- Lab: File I/O, Text Manipulation, and Command Line Parsing
- Objects
- Qt's Object Model
- Variants
- Properties and MetaProperties
- ANSI-Style Typecasts
- Signals & Slots
- QTimers
- Event Handling
- QApplication, Resources, etc..
Introduction to QML and Qt Quick
- Introduction to Qt Quick
- Qt Creator
- Qt Quick Hello World
- QML Concepts
- Composing User Interfaces
- Nested Elements
- Graphical Types
- Text Items
- Anchor Layout
- QML Components
Qt Quick Structures and User Interaction
- Qt Quick Structures
- Components
- Signals and Slots in QML
- QtQuick Controls
- Modules
- User Interaction
- Mouse Input
- Touch Input
- Keyboard Input
Animations, States and Transitions
- Animations
- Easing Curves
- Animation Groups
- States and Transitions
- States
- State Conditions
- Transitions
Under the Hood - the Qt C++ Layer
- Integrating QML with C++
- Declarative Environment
- Exporting C++ Objects to QML
- Exporting Classes to QML
- Using Custom Types
- Plug-ins
Miscellaneous Topics
- Presenting Data (QML)
- Arranging Items
- Data Models
- Using Views
- XML Models
- Views Revisited
- Graphics Effects
- Canvas
- Particles
- Shaders
- MultiThreaded Programming
- Qt Multithreading
- Thread Synchronization and Primitives
State-of-the-Art OpenGL and Qt
Location: Houston, TX
Early Bird Pricing: $2495
Regular Price: $2995
Course Description
This 5-day, hands-on course provides an introduction to modern OpenGL using programmable shader pipelines. It introduces the use of the Qt framework for infrastructure and support to quickly achieve highly efficient and visually appealing, state-of-the-art, interactive graphics applications. The class covers basic topics such as handling of geometry, graphics pipeline, transformations as well as advanced topics such as vertex, fragment and geometry shaders and their applications. Qt and C++ based Labs are designed to let participants experiment with OpenGL easily in order to deepen the understanding of the material.
Course Availability: On-site, Open Enrollment
Duration: 5 days
Course Prerequisites
-
Working knowledge of C++ programming
-
Basic knowledge of geometry
-
Previous experience with OpenGL and/or Qt is not required
Course Outline
This course will be roughly divided into four 90 minute sections and each section will target an even mix of lecture and labs. The goal is to give students plenty of time to experiment with the lab material.
The class uses Qt-5.9.1 and is based on Qt's OpenGL integration classes QOpenGLWidget and QOpenGLWindow.
Course material is divided into four 90 minute sections per day and each section will target an even mix of lecture and labs. The goal is to give students plenty of time to experiment with the lab material.
Larger OpenGL Topics are organized into parts that are not necessarily equal in length as follows:
Part 1 – The Basic
- What is OpenGL
- Steps to Render a Scene with OpenGL
- Qt’s OpenGL Support
- OpenGL Rendering Pipeline
- Shaders
- Labs: Contexts and Windows, Draw Triangles
Part 2 – Qt Refresher
- Lab: Wavefront .obj File Reader (Relevant to the Rest of the Course)
Part 3 – GLSL
- OpenGL Shading Language
- in Detail
- Lab: Rectangles, Grids
Part 4 – A Day at the Movies
- Vertices and Vectors
- Models and Cameras, the Model-View Transformation
- Demo Programs
- Matrices
- Depth and Culling
- Simplest Possible Light Model
- Lab: Three Dimensional Objects
Part 5 – Directing the Scene
- Primitives
- Indexed Drawing
- Vertex Array Objects (VAO)
- Handling Multiple Components
- of Objects
- Lab: Three Dimensional Scenes
Part 6 – Let there be Light
- Let There be Light (at the End of the Tunnel?)
- Lab: Diffuse Light Model, ADS (Phong) Light Model, Multiple Lights
Part 7 – Textures
- Texture Basics
- Textures, Images, Samplers
- Multiple Textures
- Qt Support for Textures
- CubeMap
- Labs: Multiple Textures, Cube Map
Part 8 – More Textures
- Textures Advanced
- FrameBuffer Objects
- Lab: Framebuffer Objects
Part 9 – Advanced OpenGL
- Geometry Shaders
- Vertex Displacement Shaders
- Animating Textures
- Image Based Techniques
- Procedural Texturing with Noise
- Mapping Explained, Specular, Occlusion, Alpha, Environment, Bump
- Labs
Part 10 – More Advanced OpenGL
- More Advanced Topics (Spotlight, Fog, Smoke, Shadows, Cartoon Shading)
- Reflection and Refraction with Cubemaps
- Point Sprites
- Transform Feedback and Particle Systems
- Instanced Rendering
Part 11 – Timing is Everything
- QtOpenGLExtensions Module
- OpenGL Debugging and Timing with Qt
Part 12 – Qt and OpenGL
- Integration of OpenGL and QtQuick, Custom OpenGL QQuickItem
- QPainter on QOpenGLPaintDevice
- Qt3D
Part 13 – Optimizations
- Best Practices
- GLSL Optimizations
- Vertex Specification Best Practices
- Common Mistakes
- Convert GL 3.3 to GLES 2.0
August 17, 2015
Qt Proposals and Announcements
A proposal was submitted and approved to create a playground repository on a QtMirServer, Canonical’s Mir Linux-based display server and compositor.
Once the transition is complete, future Mir server related development would occur in this repository:
http://lists.qt-project.org/pipermail/development/2015-August/022842.html
August 10, 2015
Qt 5.6 feature freeze and branching is scheduled to take place on
August 8, though that may slip depending on whether certain blockers
get fixed in time.
An alpha release is planned for September 8th.
Qt 5.5.1 is scheduled to be released in September. Sometime.
Qt Creator 3.5 RC1 is now available:
https://blog.qt.io/blog/2015/08/06/qt-creator-3-5-rc1-released/
Using Qt with Alternative Programming Languages - Part 2
Using Qt with Alternative Programming Languages - Part 1
August 3, 2015
Qt Conversations
Development traffic on the mailing lists is diminishing lately, probably as vacation season is approaching. Therefore, there are no new updates regarding release schedules.
There is a discussion involving a backwards compatibility break in 5.5.0 relating to qDebug and non-latin1 character sets.
Bug report: https://bugreports.qt.io/browse/QTBUG-47316
July 27, 2015
What's New…
There is quite a large discussion on the use of QList.
Don't use QList, use Q_DECLARE_TYPEINFO: http://comments.gmane.org/gmane.comp.lib.qt.devel/22326
Congratulations
Sérgio Martins has been nominated as an Approver