Accueil > Formations > Développement et Ingénierie de Logiciels > Langages & Écosystèmes Backend > Qt : développer des interfaces graphiques en C++ avec Qt Widgets et QML
Formation Qt : développer des interfaces graphiques en C++ avec Qt Widgets et QML
Concevez des applications graphiques C++ multiplateformes avec Qt, des écrans Qt Widgets classiques aux interfaces Qt Quick en QML branchées sur votre code C++.
Vue d'ensemble
- Maîtriser la programmation orientée objet en C++ (classes, héritage, polymorphisme, pointeurs et références)
- Connaître les lambdas et les pointeurs intelligents du C++ moderne est un plus
Objectifs pédagogiques
Programme détaillé
Écosystème Qt et environnement de développement
– Framework Qt : modules principaux (Core, GUI, Widgets, Quick, SQL, Network) et plateformes cibles desktop, mobile et embarquées
– Licences Qt : éditions open source (LGPL, GPL) et commerciale, conséquences pour la diffusion d’une application
– Qt Widgets ou Qt Quick : critères de choix selon le type d’interface, et approche hybride
– Qt Creator : kits de compilation, exécution et débogage d’une application Qt
– Projet CMake : déclaration des modules Qt, de l’exécutable et des ressources ; qmake pour reprendre les projets existants
– Installation de Qt et configuration d’un kit dans Qt Creator
– Création du projet CMake de l’application fil rouge (application de gestion simple)
Modèle objet Qt et signaux/slots
– QObject et hiérarchie parent/enfant : gestion automatique de la mémoire et durée de vie des objets
– Meta-Object Compiler (MOC) et macro Q_OBJECT : métadonnées et introspection à l’exécution
– Système de propriétés (Q_PROPERTY) : accesseurs, signal de notification, propriétés dynamiques
– Signaux et slots : syntaxe de connexion moderne avec pointeurs de fonction et lambdas, types de connexion
– Boucle d’événements et timers : fonctionnement de l’application Qt, QTimer
– Pièges courants : connexions multiples, objets détruits, déconnexion
– Création d’une classe métier qui notifie ses changements par signaux
– Connexion de composants par lambdas et déclenchement d’actions périodiques avec un timer
Construire une interface avec Qt Widgets
– QMainWindow : zone centrale, menus, barres d’outils, barre d’état et actions (QAction)
– Dialogues : QDialog modal et non modal, boîtes de messages et dialogues standard (fichiers, couleurs)
– Composants courants : champs de saisie, listes, cases à cocher, onglets et validation de la saisie
– Layouts : disposition horizontale, verticale, en grille et en formulaire, adaptation au redimensionnement et aux écrans haute résolution
– Qt Designer : conception des fichiers .ui et intégration dans le code C++
– Système de ressources : icônes et images embarquées dans l’exécutable
– Zones de défilement et impression : afficher un contenu volumineux, imprimer un document
– Écran principal du fil rouge avec menus, barre d’outils et barre d’état
– Formulaire de saisie conçu dans Qt Designer, avec validation et boîtes de dialogue
Événements et widgets personnalisés
– Gestionnaires d’événements : souris, clavier, redimensionnement, surcharge des méthodes d’événement
– Filtres d’événements : intercepter les événements d’un autre objet sans le dériver
– Widget personnalisé : hériter de QWidget, taille préférée, propriétés et signaux propres
– Dessin avec QPainter : formes, texte et images dans l’événement de peinture
– Intégration dans Qt Designer : promotion d’un widget personnalisé
– Apparence : feuilles de style Qt (QSS) et styles de la plateforme
– Création d’un widget représentant un formulaire réutilisable, intégré à Qt Designer
– Dessin d’un indicateur graphique (jauge, voyant) réagissant à la souris
– Habillage de l’application avec une feuille de style
Afficher et manipuler des données avec Model/View
– Architecture Model/View : rôles respectifs du modèle, de la vue et du delegate
– Vues de liste, de tableau et d’arbre : différence avec les widgets à éléments intégrés
– QStandardItemModel : modèle prêt à l’emploi pour les cas simples
– Modèle sur mesure : dériver QAbstractTableModel, rôles de données, notification des changements
– Tri, filtrage et recherche : modèle proxy QSortFilterProxyModel
– Édition et delegates : éditeurs personnalisés et validation des valeurs
– Tableau des éléments du fil rouge avec tri, filtre et recherche
– Édition des données avec un delegate personnalisé
Interfaces déclaratives avec Qt Quick et QML
– Qt Quick : architecture, moteur QML et rendu graphique accéléré
– Syntaxe QML : objets, propriétés, identifiants, expressions JavaScript
– Property binding : liaisons déclaratives et mise à jour automatique de l’interface
– Éléments de base : rectangles, textes, images, interaction avec la souris et le clavier
– Positionnement : ancres, positionneurs et layouts Qt Quick
– Qt Quick Controls : boutons, champs, menus, dialogues et styles prêts à l’emploi
– Composants réutilisables : fichiers QML, propriétés et signaux personnalisés
– États, transitions et animations : rendre l’interface vivante et fluide
– Création en QML d’une interface simple avec champs de texte, menus et boîtes de dialogue
– Conception d’un composant QML réutilisable animé
Intégrer C++ et QML
– Architecture hybride : backend C++ et frontend QML, partage de la logique avec une interface Widgets
– Module QML dans CMake : déclarer les fichiers QML et les types C++ du projet
– Exposer des types C++ à QML : enregistrement des types, propriétés, méthodes invocables et signaux
– Objets singleton : partager un service C++ avec toute l’interface QML
– Modèles C++ dans les vues QML : dériver QAbstractListModel, afficher les données dans ListView et ses délégués
– Échanges dans les deux sens : appeler le C++ depuis QML, réagir en QML aux signaux C++
– Écran QML prototype connecté au backend C++ de l’application fil rouge
– Affichage d’une liste de données C++ dans une vue QML
API Qt pour une application complète
– Conteneurs et chaînes Qt : QList, QHash, QString et interopérabilité avec la bibliothèque standard
– Fichiers et formats : lecture et écriture de fichiers, paramètres d’application (QSettings), JSON ; XML avec QXmlStreamReader
– Bases de données avec Qt SQL : connexion SQLite, requêtes préparées, modèles SQL pour les vues
– Réseau avec Qt Network : requêtes HTTP asynchrones et traitement des réponses JSON, sockets TCP
– Multithreading : garder l’interface réactive, worker objects et QThread, QtConcurrent, communication entre threads par signaux
– Internationalisation : textes traduisibles, Qt Linguist et chargement des traductions
– Déploiement : outils de déploiement Qt et dépendances à livrer avec l’application
– Ajout d’un accès à une base SQLite et d’un journal dans un fichier
– Envoi des données de l’application à un serveur distant en HTTP
– Exécution d’un traitement long en tâche de fond avec barre de progression
– Traduction de l’interface de l’application
Prochaines sessions
Ils nous font confiance
Cette année notre filière Langages & Écosystèmes Backend a accompagné plus de 292 entreprises dont :
Avis des participants
Très bonne formation, très instructif même après quelques années de Python dans les bras. Une très petite équipe de stagiaires qui facilite les échanges. Je redoutais le mode visio mais c'était finalement très bien adapté.
Anthony explique bien les concepts attendus et prend le temps de répondre aux questions et aux différents problèmes rencontrés. Le support présenté créé par lui-même est différent des slides habituelles que l'on rencontre et permet de mieux naviguer à travers les chapitres. Merci
Le formateur sait rendre vivante la formation et est très pédagogue. Je pense que tout le monde est parti avec un vrai plus. Le python un peu plus avancé est un peu trop condensé sur la fin mais la formation n'est pas réellement trop courte.…
Cyril est top formateur, très bonne maitrise de rust et formation de bon niveau.
Formation très bien organisée, très claire Alison explique très clairement et est très à l'écoute, avec toujours une approche pratique essentielle. je n'avais jamais fait de Python et j'ai pu coder finalement assez rapidement grâce à une progression bien articulée des exercices. Comme c'est très…
Votre formateur
Albina S.
Formatrice Java & Python
Albina intervient sur des formations portant sur les langages et écosystèmes backend. Parmi les formations qui lui sont confiées figurent notamment « C# » et « C++ ». La conception de supports pédagogiques fait également partie de ses activités.
Financement
Cette formation est éligible aux financements OPCO et FNE-Formation. Nos équipes vous accompagnent dans le montage de votre dossier.
Questions fréquentes
Combien de temps dure la formation Qt : développer des interfaces graphiques en C++ avec Qt Widgets et QML ?
Cette formation se déroule sur 4 jours.
Quels sont les prérequis pour suivre la formation Qt : développer des interfaces graphiques en C++ avec Qt Widgets et QML ?
- Maîtriser la programmation orientée objet en C++ (classes, héritage, polymorphisme, pointeurs et références) - Connaître les lambdas et les pointeurs intelligents du C++ moderne est un plus
Quel est le prix de la formation Qt : développer des interfaces graphiques en C++ avec Qt Widgets et QML ?
En inter-entreprises, elle est à 2 600 € HT par participant ; en intra-entreprise, elle est à 6 200 € HT pour le groupe. Un tarif sur-mesure est également disponible sur devis.
La formation Qt : développer des interfaces graphiques en C++ avec Qt Widgets et QML délivre-t-elle une certification ?
Cette formation ne délivre pas de certification. Une attestation de fin de formation vous sera remise à l'issue de la session.
La formation Qt : développer des interfaces graphiques en C++ avec Qt Widgets et QML est-elle éligible à un financement OPCO ?
Oui, cette formation est éligible aux financements OPCO et FNE-Formation. Nos équipes vous accompagnent dans le montage de votre dossier.
Choisissez votre formation
Mon contact chez SPARKS est professionnel et très réactif. Les échanges sont simples, efficaces, et la collaboration se déroule dans d'excellentes conditions.
