Vous l'avez compris, Qt est une
bibliothèque multi-plateforme pour créer des GUI (programme sous forme de fenêtre).
Qt est écrite en C++ et est faite pour être utilisée à la base en C++, mais il est aujourd'hui possible de l'utiliser dans d'autres langages comme Java, Python, etc.
Plus fort qu'une bibliothèque : un framework
Qt est en fait... bien plus qu'une bibliothèque. C'est un
ensemble de bibliothèques. Le tout est tellement énorme qu'on parle d'ailleurs plutôt de
framework : cela signifie que vous avez à votre disposition un ensemble d'outils pour développer vos programmes plus efficacement.
Qu'on ne s'y trompe pas : Qt est à la base faite pour créer des fenêtres, c'est en quelque sorte sa fonction centrale. Mais ce serait dommage de limiter Qt à ça.
Qt est donc constituée d'un ensemble de bibliothèques, appelées "modules". On peut y trouver entre autres ces fonctionnalités :
- Module GUI : c'est toute la partie création de fenêtres. Nous nous concentrerons surtout sur le module GUI dans ce cours.
- Module OpenGL : Qt peut ouvrir une fenêtre contenant de la 3D gérée par OpenGL.
- Module de dessin : pour tous ceux qui voudraient dessiner dans leur fenêtre (en 2D), le module de dessin est très complet !
- Module réseau : Qt fournit une batterie d'outils pour accéder au réseau, que ce soit pour créer un logiciel de Chat, un client FTP, un client Bittorent, un lecteur de flux RSS...
- Module SVG : possibilité de créer des images et animations vectorielles, à la manière de Flash.
- Module de script : Qt supporte le Javascript (ou ECMAScript), que vous pouvez réutiliser dans vos applications pour ajouter des fonctionnalités, sous forme de plugins par exemple.
- Module XML : pour ceux qui connaissent le XML, c'est un moyen très pratique d'échanger des données avec des fichiers formés à l'aide de balises, un peu comme le XHTML.
- Module SQL : permet un accès aux bases de données (MySQL, Oracle, PostgreSQL...).
Que les choses soient claires : Qt n'est pas gros, Qt est
énorme, et il ne faut pas compter sur un tutoriel pour vous expliquer tout ce qu'il y a à savoir sur Qt. Je vais vous montrer beaucoup de ses possibilités mais on ne pourra jamais tout voir. On se concentrera surtout sur la partie GUI.
Pour ceux qui veulent aller plus loin, il faudra lire la
documentation officielle (uniquement en anglais, comme toutes les documentations pour les programmeurs de toute façon). Cette documentation est très bien faite, elle détaille toutes les fonctionnalités de Qt, même les plus récentes.
Sachez d'ailleurs que j'ai choisi Qt en grande partie parce que sa documentation est très bien faite et facile à utiliser. Vous aurez donc intérêt à vous en servir.

Si vous êtes perdu ne vous en faites pas, je vous expliquerai dans un prochain chapitre comment on fait pour "lire" et naviguer dans une telle documentation.
Qt est multiplateforme
Qt est un
framework multiplateforme. Je le sais je me répète, mais c'est important de l'avoir bien compris. Tenez, d'ailleurs voilà un schéma qui illustre le fonctionnement de Qt :
Grâce à cette technique, les fenêtres que vous codez ont un "look" adapté à chaque OS. Vous codez pour Qt, et Qt traduit les instructions pour l'OS. Les utilisateurs de vos programmes n'y verront que du feu et ne sauront pas que vous utilisez Qt (de toute manière ils s'en moquent

).
Voici une démonstration de ce que je viens de vous dire. Vous avez ci-dessous le même programme, donc la même fenêtre créée avec Qt, mais sous différents OS. Vous allez voir que Qt s'adapte à chaque fois :
Sous Windows 7 |
Sous Windows XP |
Sous Linux |
Sous Mac OS X |
Tout ce que vous avez à faire pour produire le même résultat, c'est recompiler votre programme sous chacun de ces OS. Par exemple, vous avez développé votre programme sous Windows, très bien, mais les .exe n'existent pas sous Linux. Il vous suffit simplement de recompiler votre programme sous Linux et c'est bon, vous avez une version Linux !
On est obligé de recompiler pour chacun des OS ?
Oui, ça vous permet de créer des programmes binaires adaptés à chaque OS qui tournent à pleine vitesse.
On ne va toutefois pas se préoccuper de compiler sous chacun des OS maintenant, on va déjà le faire pour votre OS ça sera bien
Pour information, d'autres langages de programmation comme Java et Python ne nécessitent pas de recompilation car le terme "compilation" n'existe pas vraiment sous ces langages. Cela fait que les programmes sont un peu plus lents, mais ils s'adaptent automatiquement partout.
L'avantage du C++ par rapport à ces langages est donc sa rapidité (bien que la différence se sente de moins en moins, sauf pour les jeux vidéo qui ont besoin de rapidité et qui sont donc majoritairement codés en C++).
L'histoire de Qt
Bon, ne comptez pas sur moi pour vous faire un historique long et chiant sur Qt, mais je pense qu'un tout petit peu de culture générale ne peut pas vous faire de mal et vous permettra de savoir de quoi vous parlez.
Qt est un framework développé initialement par la société Trolltech, qui fut racheté par Nokia par la suite.
Le développement de Qt a commencé en 1991 (ça remonte pas mal donc) et il a été dès le début utilisé par KDE, un des principaux environnements de bureau de Linux.
Qt s'écrit "Qt" et non "QT", donc avec un "t" minuscule (si vous faites l'erreur un fanatique de Qt vous égorgera probablement pour vous le rappeler

)
Qt signifie "Cute" (prononcez "Quioute"), ce qui signifie "Mignonne", parce que les développeurs trouvaient que la lettre Q était jolie dans leur éditeur de texte. Oui je sais, ils sont fous ces programmeurs.
La licence de Qt
Qt est distribué sous deux licences, au choix : LGPL ou propriétaire. Celle qui nous intéresse est la licence LGPL car elle nous permet d'utiliser gratuitement Qt (et même d'avoir accès à son code source si on veut !). On peut aussi bien réaliser des programmes libres que des programmes propriétaires.
Bref, c'est vraiment l'idéal pour nous. On peut l'utiliser gratuitement et en faire usage dans des programmes libres comme dans des programmes propriétaires.
Qui utilise Qt ?
Une bibliothèque comme Qt a besoin de références, c'est-à-dire d'entreprises célèbres qui l'utilisent, pour montrer son sérieux.
De ce point de vue là, pas de problème. Qt est utilisée par de nombreuses entreprises que vous connaissez sûrement :
Qt est utilisée pour réaliser de nombreux GUI, comme celui d'Adobe Photoshop Elements, de Google Earth ou encore de Skype !