Here is a brief summary of the topics of the course.
Introduction - Introduction to the course
- Everything required for starting the course
- Workspace setup
- Documentation
- Help channels
- Workflow introduction
- Course tools introduction
- Introductory topics:
- Creating and debugging Qt projects
Hello world! - String handling and value types
Basic string manipulation (min: QString + QChar + QCodec, creating, concatenation + light-weight use with QLatin1String - Item Containers
Adding, iterating, manipulating data in item containers - QObject - Subclassing
Custom QObjects with properties, enums - Parent-Child relationship
Qt memory management with object trees - Object Communicating: Signals and Slots
Observer pattern: Object communication with signals and slots - Object Communicating: The differences between queued connections and direct connections
The differences between queued connections and direct connections - Object Communicating: Event Handlers
Customising event handling - Object Communicating: Custom Events
Custom events and event handling - Smart Pointers - QPointer, QScopedPointer
Memory management with Qt smart pointers - Shared Pointers
Managing object copies with shared pointers (does not have to be between threads) - Streaming
Meta-type system, File I/O - Implicitly Shared Custom Type
Copy-on-write pattern in value objects, implicit sharing
- Short basic assignments that account for 50%ish of the assignments of the week
- One bigger assignment completed step by step trough implementing the required topics of learning from Week 1 resulting in a complete application
- User Interface creation using Qt Quick:
- QML Hello World
Hello world v2! To be able to develop, build and run a simple QML application - Rectangle, Image, BorderImage, Text
Basic QML items - Key Handling
Controlling focus and handling key presses - Mouse Handling
Mouse handling with MouseArea - Gestures
Swipe, flick and pinch handling - Handlers
Handling multiple touch events in a single item - Positioners
Grouping items with positioners - Anchors
UI scaling with anchors - Components: Properties, Signals
Creating components and component interfaces - Re-usable Components
How to create good, re-usable components - Qt Quick Controls
The Qt Quick Controls module - Global Object
What is a global object? - Behavior
Basic animation - Nested Animations
Creating eye candy with nested animations - State Machines
Fluid UI with state machines and animations - Graphics Effects
Basic ready-made eye candy - Basic Particle System: Emitter, Particle
Eye candy with particle effects
- Short basic assignments that account for 50%ish of the assignments of the week
- TBA
- Manipulating and presenting data using QML:
- List model manipulation
Basic QML model and JS manipulation - XML List Model
XML parsing in QML - Hierarchical Models
Tree model - ListView vs TreeView
List vs Tree - Standard Item Model
Model/View framework basics - Custom Table Model
Advanced Model/View - Basic Delegate
TBA - Grid vs TableView
Use Cases - Dynamic Delegate - Loader
Good delegate implementation - Charts
TBA - Data Visualization
TBA
- Short basic assignments that account for 50%ish of the assignments of the week
- TBA
- Combining C++ with QML:
- Context Properties
How to communicate between C++ and QML - Context Objects
TBA - Calling QML from C++ and vice versa
TBA - Registration
TBA - QML Plugins
Right way of doing registration - Custom QObjects
Deriving good types for QML - QPainter
TBA - Custom Painted Items
TBA - Scene Graph Item
TBA
- Short basic assignments that account for 50%ish of the assignments of the week
- TBA
- Communication between processes and threads :
- JS Workers
Worker limitation - List Manipulation
Worker use case - QtConcurrent
TBA - Container Manipulation with QtConcurrent
TBA - QRunnable
TBA - Thread Affinity
Right way to handle threads - Sync/Mutual Exclusion
TBA - Thread Cleanup
Good practices - Inter-Thread Communication
TBA - IPC: Shared Memory
TBA - IPC: File Watcher
TBA - IPC: Remote Objects TBA
- Short basic assignments that account for 50%ish of the assignments of the week
- TBA
- TBA:
- Plugins
TBA - XML and JSON Handling
TBA - Networking
TBA - Bluetooth?
TBA - Sensors
TBA - Maps Routing
TBA - Media Player
TBA - Subtitles
TBA - SQL Databases
TBA - Webengine
TBA - Hybrid Apps
TBA
- Short basic assignments that account for 50%ish of the assignments of the week
- TBA
Here are our plans and outlines for the Qt Mooc course materials.
This is the original material outline repository which contains the work in progress that is the Qt Mooc course material.
These pages are used for content creation and do not in all cases represent a finished product. In most cases they represent a construction site where we recommend you take the stairs, instead of the elevator. The elevator will be implemented in 2020.
This is also the repository where the completed course exercises can be found.