Cette formation de perfectionnement Qt6 de 4 jours couvre les fonctionnalités indispensables aux applications professionnelles : MVC avancé et délégués, multithreading avec QThread et QtConcurrent, communication réseau TCP / UDP / WebSockets, rendu graphique avancé avec animations et scène graphique, QML et Qt Quick avec styling, intégration C++ ↔ QML, accessibilité, internationalisation, tests, profilage, migration Qt5 → Qt6, packaging multiplateforme, CI GitLab, et apports de l’IA dans un projet Qt.
Public visé
Développeurs C++ / Qt souhaitant approfondir leurs compétences sur Qt6.
Prérequis
Avoir suivi cette formation, ou en maîtriser les thèmes abordés :
Objectifs pédagogiques
À l’issue de cette formation, vous serez capable de :
- Maîtriser le MVC avancé et les délégués personnalisés Qt
- Implémenter le multithreading avec
QThread,QtConcurrentetQPromise - Créer des applications réseau TCP / UDP / WebSockets et persistantes
- Développer des interfaces modernes en QML et Qt Quick
- Intégrer C++ et QML dans une architecture propre
- Optimiser, packager et déployer une application Qt multiplateforme
- Intégrer un assistant IA dans un workflow Qt
Programme
Jour 1 - Matin
MVC avancé et délégués
MVC avancé
- maîtriser
QAbstractItemModelen profondeur- rôles standards et custom
- indices et navigation parent / child
- modèles de type arbre
- enchaîner des transformations avec les proxy models —
QSortFilterProxyModel, cascade - supporter drag & drop sur une vue —
mimeData,dropMimeData
Travaux pratiques :
- Treeview filtrable avec proxies cascadés
- Drag & drop de lignes entre deux vues
Délégués
- personnaliser l’édition avec des délégués
QStyledItemDelegatecomme base- éditeurs custom —
createEditor,setEditorData,setModelData - rendu personnalisé via
paint
- rendre les en-têtes interactifs — tri, menu contextuel
Travaux pratiques :
- Éditeur de couleur inline via délégué custom
- Entêtes triables avec icônes et menu contextuel
Jour 1 - Après-midi
Concurrence Qt
- structurer le multithreading Qt
QThreadet cycle de vie- worker pattern avec
moveToThread - règles d’affinité d’objet
- synchroniser des accès concurrents
QMutexet verrous RAIIQReadWriteLockpour lectures parallèlesQSemaphorepour producteur / consommateur
- paralléliser des traitements —
QtConcurrent,QFuture,QPromise - communiquer entre threads via signaux et slots en connexions
queued - piloter un processus externe avec
QProcess
Travaux pratiques :
- Traitement d’images en parallèle avec agrégation de progression via
QPromise - File producteur / consommateur sécurisée par
QMutex - Worker pattern avec
moveToThreadet signauxqueued - Wrapper graphique autour d’un outil CLI piloté par
QProcess
Jour 2 - Matin
Graphisme et animations
Graphisme
- pousser le dessin avancé
- transformations composées
- double buffering pour fluidité
- composition et modes de fusion
- construire une scène graphique avancée avec des items custom
- appliquer des effets graphiques —
QGraphicsEffect
Travaux pratiques :
- Scène synoptique d’équipements avec sélection, déplacement, zoom
- Application d’effets flou et ombre sur les items sélectionnés
Animations
- animer des propriétés
QPropertyAnimationsur valeurs numériquesQStateMachinepour états et transitions- easing curves prédéfinies et custom
Travaux pratiques :
- Jauge circulaire custom animée avec easing curves
- Panneau latéral piloté par
QStateMachineavec états ouvert / fermé
Jour 2 - Après-midi
Réseau et persistance
Réseau
- communiquer en TCP ou UDP —
QTcpSocket,QUdpSocket - consommer des API HTTP modernes avec
QNetworkAccessManager - exploiter le temps réel
- WebSockets pour messages bidirectionnels
- WebChannel pour exposer du C++ à une page web
Travaux pratiques :
- Client REST JSON consommant une API d’équipements
- Flux temps réel via WebSocket dans un
QWebEngineView
Persistance
- sérialiser des données
- JSON pour interopérabilité
- CBOR pour compacité binaire
- XML pour compatibilité legacy
- gérer une base en production
- transactions
- requêtes préparées
- migrations versionnées
Travaux pratiques :
- Export du synoptique en JSON puis en CBOR
- Migration de schéma versionnée avec rollback transactionnel
Jour 3 - Matin
Fondations QML et structure
Fondations QML
- arbitrer entre Qt Quick et Widgets selon les cas
- écrire du QML idiomatique
- types et propriétés
- bindings réactifs
- composition de composants
- exploiter et customiser Qt Quick Controls 2
Travaux pratiques :
- Calculatrice en QML pur comme warm-up
- Dashboard de supervision avec composants natifs
Structure
- structurer la mise en page QML —
RowLayout,ColumnLayout,GridLayout,Flow - afficher des collections
ListViewpour listesGridViewpour grillesRepeaterpour éléments statiques
Travaux pratiques :
- Dashboard de supervision avec layout responsive
- Grille d’équipements pilotée par un modèle local
- Filtrage et tri via propriétés et bindings
Jour 3 - Après-midi
Styling, animations, 3D
Styling
- appliquer un styling cohérent
- Material et Universal — thèmes natifs
- thèmes custom via
QtQuick.Controls.impl - variables de palette
Travaux pratiques :
- Variantes clair et sombre du dashboard
Animations
- animer les transitions d’interface en QML
- implémenter le drag & drop en QML
Travaux pratiques :
- Apparition animée des cartes d’équipement
- Réorganisation des cartes par drag & drop
3D
- initier des scènes 3D avec Qt Quick 3D
Travaux pratiques :
- Vue 3D manipulable d’un rack d’équipements
Jour 4 - Matin
Intégration C++ ↔ QML, accessibilité, i18n
Intégration C++ ↔ QML
- exposer du C++ à QML
Q_PROPERTYpour propriétés observablesQ_INVOKABLEpour méthodes appelables- enregistrement via
qmlRegisterType
- publier un modèle C++ consommable en QML —
QAbstractListModelavec rôles
Travaux pratiques :
- Classe
Settingsexposée à QML viaqmlRegisterType - Flux temps réel d’équipements via modèle C++ enregistré
Accessibilité
- rendre une application accessible
- navigation clavier
- contrastes et tailles de texte
- compatibilité lecteurs d’écran
Travaux pratiques :
- Audit accessibilité du dashboard et corrections
Internationalisation
- internationaliser avec Qt Linguist
Travaux pratiques :
- Version FR / EN / DE du dashboard avec changement à chaud
Jour 4 - Après-midi
Qualité, déploiement, IA
Qualité
- tester C++ et QML
- Qt Test côté C++
TestCasecôté QML- tests d’intégration GUI
- profiler une application et identifier les hotspots
- Qt Creator Profiler
- flamegraphs
- analyse CPU et mémoire
Travaux pratiques :
- Tests unitaires C++ du modèle et tests QML d’un composant
- Identification d’un hotspot via Qt Creator Profiler et correction
Déploiement
- migrer un projet Qt5 vers Qt6 — ruptures d’API, outillage
- packager et déployer sur plusieurs plateformes en CI GitLab
windeployqtpour Windowsmacdeployqtpour macOS- modèle
.gitlab-ci.ymlfourni
Travaux pratiques :
- Migration d’un petit projet Qt5 fourni vers Qt6
- Complétion d’un modèle
.gitlab-ci.ymlpour builder Linux et Windows
IA
- tirer parti d’un assistant IA dans un projet Qt
- génération de composants QML
- complétion de
Q_PROPERTYetQ_INVOKABLE - aide à la migration Qt5 → Qt6
Travaux pratiques :
- Génération assistée d’un composant QML complexe par un assistant IA
Travaux pratiques :
- Tests unitaires C++ du modèle et tests QML d’un composant
- Identification d’un hotspot via Qt Creator Profiler et correction
- Migration d’un petit projet Qt5 fourni vers Qt6
- Complétion d’un modèle
.gitlab-ci.ymlpour builder Linux et Windows, génération assistée d’un composant QML complexe par un assistant IA
Modalités d’évaluation des acquis
En cours de formation, par des études de cas ou des travaux pratiques. En fin de formation, par un questionnaire d’auto-évaluation.
Voir aussi
Vous serez peut-être intéressés par les formations suivantes :
Formation DEV-CPP-310 — C++ - Librairie Qt - Perfectionnement. Domaine : Développement. Niveau : Avancé. Durée : 4 jours (28 heures). Mots-clés : c++, développement, avancé, qt, gui, multithreading, réseau, qml. Cylian Formation, Dijon.