I. Modèle/vue

I-A. Objectifs

  • Connaître le but de la programmation modèle/vue.
  • Savoir comment une vue communique avec le modèle.
  • Savoir ce que les widgets de Qt fournissent pour afficher les données du modèle.
  • Être capable d'utiliser des modèles prédéfinis de Qt.
  • Savoir comment passer une vue de cellule de lecture seule à lecture/écriture.
  • Savoir pourquoi une vue appelle un modèle plusieurs fois pour afficher une seule cellule.
  • Savoir comment trouver un élément spécifique dans un modèle.
  • Savoir comment ajouter une ligne à une table.
  • Savoir comment utiliser la sélection.
  • Savoir comment la vue reconnaît les changements qui ont été apportés aux données du modèle.
  • Savoir quel est le but d'un délégué et comment il peut être utilisé.
  • Être capable de trier et filtrer les données d'un tableau.

I-B. Liens utiles

II. Programmation multi-thread en Qt

II-A. Objectifs

  • Être capable de démarrer un nouveau thread avec QThread.
  • Savoir comment envoyer des messages vers un autre thread.
  • Savoir ce que signifie pour une méthode ou une classe d'être thread-safe ou réentrant.
  • Savoir se servir d'un mutex.
  • Savoir se servir d'un sémaphore.
  • Savoir ce que signifie l'affinité des threads pour les QObject.
  • Savoir quand un thread a besoin d'une boucle d'événements.
  • Savoir que l'on peut utiliser des threads de l'API native et des QThread en parallèle.
  • Savoir pourquoi les connexions en attente sont utiles lorsque vous travaillez avec des threads.
  • Savoir quel est le but des fonctions du module QtConcurrent et comment elles peuvent être utilisées.

II-B. Liens utiles

III. Traitement de texte riche

III-A. Objectifs

  • Être familiarisé avec QTextDocument, la classe de Qt pour représenter du texte formaté.
  • Être capable d'afficher du texte formaté à l'aide de QTextEdit.
  • Savoir comment QTextFrame, QTextBlock et QTextFragment peuvent être utilisés pour construire une hiérarchie de texte formaté.
  • Être capable de construire, modifier et exporter du texte formaté.

III-B. Liens utiles

IV. Gestion de projets Qt (développement/tests unitaires/portabilité/licences)

IV-A. Objectifs

  • GPL, LGPL ou Commercial : quelle licence choisir ?
  • Savoir comment écrire et compiler un test unitaire basique.
  • Savoir que Qt peut être utilisé avec d'autres bibliothèques telles que STL, boost et ACE.
  • Savoir organiser l'arbre de code source pour un gros projet.

IV-B. Liens utiles

V. Création de plug-ins

V-A. Objectifs

  • Savoir que les fonctionnalités de Qt peuvent être étendues par l'ajout d'extensions.
  • Être capable de charger une bibliothèque dynamique avec QLibrary.
  • Savoir charger un plug-in existant.
  • Savoir créer un plug-in.

V-B. Liens utiles

VI. Glisser/Déposer et l'accès au presse-papiers

VI-A. Objectifs

  • Connaître les gestionnaires d'événements pertinents pour une opération de glisser-déposer.
  • Être en mesure d'accepter des données venant d'une application externe.
  • Être capable de faire un glisser/déposer de données entre deux widgets.
  • Savoir identifier de quel widget les données déposées viennent.
  • Être capable de faire un glisser/déposer de types de données personnalisés.
  • Savoir comment permettre le glisser/déposer pour les éléments d'une vue.
  • Être en mesure d'accéder aux données stockées dans le presse-papiers.
  • Être capable de placer des données dans le presse-papiers.

VI-B. Liens utiles

VII. Widgets personnalisés

VII-A. Objectifs

  • Être capable de développer un widget personnalisé peint.
  • Savoir comment les widgets peints peuvent prendre en compte les styles.
  • Être capable de concevoir un widget personnalisé de différentes manières : agrégation, sous-classe, peinture personnalisée.

VII-B. Liens utiles

VIII. Styler les widgets

VIII-A. Objectifs

  • Savoir définir une feuille de style.
  • Être en mesure de spécifier un sélecteur pour un widget spécifique.
  • Être capable de définir des attributs de styles différents comme l'arrière-plan du texte, les marges internes et les bordures.
  • Être capable d'utiliser le designer pour le développement avec feuille de style.
  • Être capable de définir un style avec un argument de ligne de commande.
  • Connaître comment QStyle doit être utilisé dans le corps du paintEvent() pour recevoir le style des widgets compatibles.
  • Savoir quel est le but de QStyleOption.

VIII-B. Liens utiles

IX. Rendre ces applications scriptables

IX-A. Objectifs

  • Savoir que Qt Script est basé sur ECMA script, une version standardisée de JavaScript.
  • Savoir que QScriptEngine est la classe qui est capable de charger et d'exécuter Qt Script.
  • Savoir que QScriptValue est un type de variant accessible à partir de C++ et de Qt Script.
  • Être capable de rendre une valeur d'un programme C++ personnalisé accessible à Qt Script.
  • Savoir appeler des fonctions Qt Script à partir du C++ et comment passer des paramètres.
  • Savoir exposer un QObject ou un dérivé à Qt Script.
  • Savoir réaliser une connexion d'un signal à une fonction Qt Script.
  • Savoir détecter et gérer les erreurs de Qt Script.
  • Savoir vérifier les erreurs de scripts.

IX-B. Liens utiles

X. Écrire du code pour une traduction efficace

X-A. Objectifs

  • Savoir comment un texte constant contenant des caractères chinois peut être lu dans une QString.
  • Savoir comment envelopper les chaînes de caractères qui doivent être traduites.
  • Être capable d'extraire les chaînes de caractères à traduire à partir d'un projet Qt.
  • Savoir prendre l'encodage du fichier source en compte.
  • Savoir utiliser Linguist pour traduire les chaînes de caractères extraites.
  • Être capable de sauvegarder les chaînes de caractères traduites dans un fichier qm.
  • Savoir comment QT_NO_CAST_FROM_ASCII peut être utilisé pour trouver toutes les constantes de chaînes de caractères qui ne sont pas traduites.
  • Savoir utiliser des icônes de paramètres régionaux spécifiques.

X-B. Liens utiles

XI. Utilisation du framework Undo (retour en arrière)

XI-A. Objectifs

  • Connaître l'architecture du framework Undo de Qt.
  • Savoir comment combiner des commandes avec la compression et les macros

XI-B. Liens utiles