- une API orientée objet et développée en C++ par Qt Development Frameworks, filiale de Digia. Qt offre des composants d'interface graphique (widgets), d'accès aux données, de connexions réseaux, de gestion des fils d'exécution, d'analyse XML, etc. ;
- par certains aspects, elle ressemble à un framework lorsqu'on l'utilise pour concevoir des interfaces graphiques ou que l'on conçoit l'architecture de son application en utilisant les mécanismes des signaux et slots par exemple.
Qt supporte des bindings avec plus d'une dizaine de langages autres que le C++, comme Java, Python, Ruby, Ada, C#, Pascal, Perl, Common Lisp, etc.
Qt est notamment connu pour être la bibliothèque sur laquelle repose l'environnement graphique KDE, l'un des environnements de bureau les plus utilisés dans le monde GNU/Linux.
En 1991, ils entament le développement de cette bibliothèque. L'année suivante, Chambe-Eng propose le principe des « signaux et slots », qui devient la pierre angulaire de Qt. Et en 1993, le noyau de Qt est prêt et permet aux informaticiens de développer leurs propres composants graphiques. C'est à la fin de cette année que Haavard Nord propose de créer une entreprise pour commercialiser leur bibliothèque.
Quasar Technologies est créé le et renommé six mois plus tard en Troll Tech, puis Trolltech, puis Qt Software et enfin Qt Development Frameworks. Les débuts sont particulièrement difficiles financièrement. Mais ils ont la chance d'être mariés : leurs femmes subviennent à leurs besoins.
Le projet a été nommé Qt parce que le caractère Q était joli dans l'écriture Emacs de Haavard, et le t provient de Xt Xtoolkit. Le tout se prononçant en anglais cute, ce qui signifie « mignon ». Le t étant minuscule, ne pas prononcer cutie (/ˈkjuː.ti/) : ce n'est pas un sigle (QT).
C'est en que Trolltech a son premier client, l'entreprise norvégienne Metis. Et durant presque un an, elle n'en a pas d'autre, rendant l'entreprise très fragile financièrement. Son second client, l'Agence spatiale européenne (ESA), lui achète dix licences en mars 1996
Structure générale
L'API Qt est constituée de classes aux noms préfixés par Q et dont chaque mot commence par une majuscule (ex:QLineEdit
), c'est la typographie CamelCase. Ces classes ont souvent pour attributs des types énumérés déclarés dans l'espace de nommage Qt
.
Mis à part une architecture en pur objet, certaines fonctionnalités
basiques sont implémentées par des macros (chaîne de caractères à
traduire avec tr
, affichage sur la sortie standard avec qDebug
...).Les conventions de nommage des méthodes sont assez semblables à celles de Java : le lowerCamelCase est utilisé, c'est-à-dire que tous les mots sauf le premier prennent une majuscule (ex:
indicatorFollowsStyle()
), les modificateurs sont précédés par set
, en revanche les accesseurs prennent simplement le nom de l'attribut (ex : text()
) ou commencent par is
dans le cas des booléens (ex : isChecked()
).Arborescence des objets
Les objets Qt (ceux héritant deQObject
) peuvent s'organiser d'eux-mêmes sous forme d'arbre.
Ainsi, lorsqu'une classe est instanciée, on peut lui définir un objet
parent. Cette organisation des objets sous forme d'arbre facilite la gestion de la mémoire car avant qu'un objet parent ne soit détruit, Qt appelle récursivement le destructeur de tous les enfantsCette notion d'arbre des objets permet également de débugger plus facilement, via l'appel de méthodes comme
QObject::dumpObjectTree()
et Object::dumpObjectInfo()
.Compilateur de meta-objets
Le moc (pour Meta Object Compiler) est un préprocesseur qui, appliqué avant compilation du code source d'un programme Qt, génère des meta-informations relatives aux classes utilisées dans le programme. Ces meta-informations sont ensuite utilisées par Qt pour fournir des fonctions non disponibles en C++, comme les signaux et slots et l'introspection.L'utilisation d'un tel outil additionnel démarque les programmes Qt du langage C++ standard. Ce fonctionnement est vu par Qt Development Frameworks comme un compromis nécessaire pour fournir l'introspection et les mécanismes de signaux. À la sortie de Qt 1.x, les implémentations des templates par les compilateurs C++ n'étaient pas suffisamment homogènes.
Signaux et slots
Les signaux et slots sont une implémentation du patron de conception observateur. L'idée est de connecter des objets entre eux via des signaux qui sont émis et reçus par des slots. Du point de vue du développeur, les signaux sont représentés comme de simples méthodes de la classe émettrice, dont il n'y a pas d'implémentation. Ces « méthodes » sont par la suite appelées, en faisant précéder « emit », qui désigne l'émission du signal. Pour sa part, le slot connecté à un signal est une méthode de la classe réceptrice, qui doit avoir la même signature (autrement dit les mêmes paramètres que le signal auquel il est connecté), mais à la différence des signaux, il doit être implémenté par le développeur. Le code de cette implémentation représente les actions à réaliser à la réception du signal.C'est le MOC qui se charge de générer le code C++ nécessaire pour connecter les signaux et les slots.
Internationalisation
Qt intègre son propre système de traduction, qui n'est pas foncièrement différent dans le principe de la bibliothèque gettext. Selon le manuel de Qt Linguist, l'internationalisation est assurée par la collaboration de trois types de personnes : les développeurs, le chef de projet et les traducteurs .Dans leur code source, les développeurs entrent des chaînes de caractères dans leur propre langue. Ils doivent permettre la traduction de ces chaînes grâce à la méthode
tr()
. En cas d'ambiguïté
sur le sens d'une expression, ils peuvent également indiquer des
commentaires destinés à aider les traducteurs.Le chef de projet déclare les fichiers de traduction (un pour chaque langue) dans le fichier de projet. L'utilitaire
lupdate
parcourt les sources à la recherche de chaînes à traduire et
synchronise les fichiers de traduction avec les sources. Les fichiers de
traductions sont des fichiers XML portant l'extension .ts.Les traducteurs utilisent Qt Linguist pour renseigner les fichiers de traduction. Quand les traductions sont finies, le chef de projet peut compiler les fichiers .ts à l'aide de l'utilitaire
lrelease
qui génère des fichiers binaires portant l'extension .qm,
exploitables par le programme. Ces fichiers sont lus à l'exécution et
les chaînes de caractères qui y sont trouvées remplacent celles qui ont
été écrites par les développeurs.[infos sources wikipédia] . Bonevy L. BEBY MESS.
Aucun commentaire:
Enregistrer un commentaire