Contact Us

Contact us

Submit a contact request

Call us

We have Sales offices around the world

Training and Events

Learn about Qt for application development, UI design, and  embedded device creation from The Qt Company and Qt ecosystem partners. 

Using the event filters below, you can find on-demand webinar videos from past events, as well as upcoming live webinars. You can also search using topic tags and other event types, such as training and trade shows, or by organizer — whether it be The Qt Company or a Qt partner.

Loading Events

« All Events

  • This event has passed.

Effective QML (Sunnyvale, CA)

7 March 2018 - 9 March 2018


This 3-day course focuses on design patterns and best practices to use when creating applications with QML user interfaces. Entering as intermediate QML programmers, students will leave with the knowledge of when to use various QML constructs in the best manner. This course focuses heavily on applications that are driven by C++ backends.

Students will learn to create QML that is more declarative, maintainable and testable. The students will also learn about optimizing for startup and runtime performance as well as memory consumption.

Course Availability: On-site, Open Enrollment
Duration: 3 days
Course Prerequisites

  • Basic knowledge of programming with Qt on the desktop using widgets
  • Basic QML experience


Course Outline

Day 1

Course Introduction

  • Welcome and Introductions
  • Agenda
  • Logistics


Review of Important Qt Concepts 

  • Qt PropertiesCombination of Get/Set/Notify
    • Declaration of a Qt Property
    • Qt Property with Enum
    • Getting & Setting Qt Properties
    • Dynamic Properties


Building Blocks of QML

  • Introspection
  • Meta Object Compiler (MOC)
  • QQuickItem
  •  QVariant
    • QVariant and QML
  • QVariant Containers
    • QVariantList
    • QList
    • QQmlListProperty
  • Qt C++ Layer


Layered Design

  • Introduction to Layered Design
  • Building an Application as a Library


Questions and Answers Session


Lab 1

Day 2

Review and Solution of Lab 1 


Extending/Creating New Items

  • Dividing Code (QML) into Components
    • Creating New Items (Create New .qml File)
  • Alias Properties
  • Property Scope
    • Public Scope
    • Private Scope
    • Example: Public Members,  Private Member
    • Private Properties
    • Avoid Inheriting Public Members


Dynamic Creation of Items

  • Creating Items DynamicallyProcedural Method
  • Declarative Method
  • Procedural Creation
  • Procedural/Declarative Creation
  • Declarative Creation
  • Creating Multiple Items
  • Repeaters


Questions and Answers Session


Lab 2


Day 3


Review and Solution of Lab 2

User Input

  • Keyboard Navigation and Focus
  • Input Focus
    • Focus Order
    • Focus property
    • Active Focus
    • FocusScope
  • Handling Keyboard Input
    • Key-Specific Handlers
    • All Keys Handler
    • Key Event Propagation
    • Event Propagation is Convenient
  • Multi-Touch
    • Common Multi-Touch Gestures
    • Handling Overlapping Touch Areas
  • Mouse/Single-Touch
    • Tap
    • Double-Tap
    • Tap and Hold



  • Basic Selector Concept
  • Automatic Selectors
  • Custom Selectors
  • Custom Selectors via Environment
  • Conflict Resolution Order
  • Asset Management



  • QTest Framework in QML
    • Overview
    • Adding a Test Suite
    • Implementing a Test
    • Add a Testing Main()
    • Running the Test
    • Simulating GUI Events
    • Mocking C++ Classes with QML
    • SignalSpy
  • Design for Testability


Course Wrap-up

  • Summary of Key Points
  • Where to Get More Information and Help
    • Examples and Reference Materials Included with Course Materials
    • Pointers to Other Materials & Other ICS Classes
  • Optional Take Home Lab
  • Questions & Answers


Note: This course is being conducted by ICS, a certified Qt Partner.



7 March 2018
9 March 2018
Event Category:
Event Tags:
, , , , ,


The Qt Company & ICS


Please contact us if you have any questions.