Sous ces faux airs des marketing racoleur et grossier, cet article va vous parler d'un des exemples les plus intéressent de l'aboutissement d'un framework libre.
Un framework est une bibliothèques de fonctions toutes faites, elles servent souvent à créer des fenêtres (pour les framework graphiques comme GTK par exemple), mais elle peuvent aussi avoir une couche réseau, des fonctions de traitement de données en XML, des images... Qt doit être la bibliothèque la plus puissante et fournie.
Multiplateforme
Je crois que le mot est un peu faible. Il ne faut pas dire multiplateforme mais : se compile pour GNU/Linux, Windows, Windows CE, Mac OS X, BSD, Unix, Symbian OS, Maemo, et là, on est juste!
Performant :
Que l'on se le dise, je n'ai jamais testé .net (dotnet) (je ne suis pas fermé, mais je suis sous GNU/Linux ce qui complique un peu les choses). Cependant la chose dont je peux être sûr est que les performances de Qt sont supérieurs à celles de .net.
Il y a plusieurs raison à cela : la première est que la compilation de programmes Qt/C++ donne des binaires, des vrais! À la différence de .net qui utilise un langage intermédiaire un peu comme le java, et en informatique plus on ajoute des intermédiaires plus on perd des performances (même si souvent cela se traduit par un gain de temps pour le développement, le portage... meunon pas la soupe! le portage :p).
Mais j'arrêterai la comparaison ici car .net n'est pas, pour moi, un framework, c'est un peu plus que cela car il s'exécute dans une machine virtuelle.
Et c'est encore une fois ce qui fait la force de Qt : il n'y a pas de machine virtuelle à charger, et en fonction des besoin toutes les bibliothèques (DLL) ne sont pas chargées. J'aime d'ailleurs beaucoup cette programmation "modulaire", si on a besoin de lire l'heure on écris #include <QTime>, sinon la montre reste au placard !
Utilisable en C++, mais aussi...
Qt a été initialement développé en C++ mais il existe maintenant des bindings dans différents langages : java, Python et C#.
Concepts fondamentaux
La compilation d'un programme se fait très simplement : on crée le projet avec la commande qmake -project la première fois qui génère un fichier .pro avec la liste de fichiers, les interfaces graphiques en .ui... Pour compiler on lance qmake et make. Qt se charge de tout. Quand je vous disais que l'on utilise uniquement en fait on peut spécifier dans le fichier .pro les modules à charger. Par exemple dans ma dernière application j'utilise : QT += network xml webkit. Il s'agit de la couche réseau pour faire un client FTP, du module XML pour lire et modifier des fichier de ce type et le module webkit car j'ai besoin d'afficher des pages web.
Les signaux et les slots sont là pour vous simplifier la vie par exemple quand vous créez un fenêtre l'application envoie un signal quand un bouton est enfoncé (ou relâche : il existe des dizaines de signaux différents). Le développeur n'a qu'a écrire le slot, c'est-à-dire la fonction qui s'exécute l'or de cette action. Qt se charge de générer le code nécessaire pour lier les deux fonctions. Dans une utilisation plus avancé il est possible de créer ses propres signaux.
C'est assez marrant, en utilisant l'éditeur wysiwyg officiel nommé Qt Creator j'ai retrouvé la facilité du Pascal (Je connais un peu Free Pascal avec son éditeur Lazarus).
Un chose aussi très intéressent (voir divertissante :-) ) est la possibilité de définir des actions sans aucun ligne de code ! Imaginons que vous vouliez créer un bouton effacer, qui vide complètement une zone de texte. Ou remplir une jauge en fonction de la position d'un curseur (par exemple les Sliders) tout cela est possible avec l'éditeur de fenêtres.
Un chose aussi très pratique est l'agacement et le redimensionnement automatique des objets dans une fenêtre.
Qt même sur mon mobile !
On sait que ce framework est utilisé dans l'imagerie médicale, l'aviation et par Skype. Ce n'est pas pour rien que Nokia a racheté Trolltech et son Qt, car il développe en partenariat avec Intel un os pour mobile nommé MeeGo le fils de Maemo et Moblin deux anciens OS pour mobiles. MeeGo a la particularité d'être développé en Qt sur une base de Debian.
Je crois que je pourrai en écrire de pages et des pages. Qt est réellement complet et couplé au C++ il peut se montrer comme un très bonne alternative au java. Qt est performant, multiplateforme, pratique et surtout libre.
Edit : je viens d'y repenser, à l'époque de la sortie de Qt 4 Trolltech avait son clip :-) : la Qt4 Dance