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▲
- Thread
- Documentation : le support des threads avec Qt
- Documentation : la classe QThread
- Qt Labs : vous vous y prenez mal...
- Qt Labs : les threads sans maux de tête
- Qt Quarterly : implémenter un mutex en lecture et en écriture
- Partie III, chapitre 2 : Qt 4 et C++
- Chapitre 7 et 8 : Advanced Qt Programming
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▲
- Problèmes de traduction ?
- Qt Quarterly : un tr() oublié ?
- Qt Quarterly : FAQ sur l'internationalisation
- Qt Quarterly : les formes du pluriel dans les traductions
- Qt Quarterly : traduction dynamique
- TV Qt : la traduction d'applications avec Qt
- Documentation : l'internationalisation
- Partie III, chapitre 1 : Qt 4 et C++