Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Officiels > Programmation > Apprenez à programmer en C++ ! > [Pratique] Créez vos propres fenêtres avec Qt > Introduction à Qt > Lecture du tutoriel

Introduction à Qt

Avatar
Auteur : M@teo21
Note : 18 / 20 (11 votes)
Visualisations : 95 212

Plus d'informations Plus d'informations
Les amis, le temps n'est plus aux bavardages mais au concret !
Vous trouverez difficilement plus concret que cette partie II du cours ^^

Pour bien pouvoir comprendre cette partie, il est vital que vous ayez lu et compris la plupart de la partie I.
Si certaines zones de la première partie vous sont encore un peu obscures, n'hésitez pas à y faire un tour à nouveau. Au pire des cas, si vraiment ça ne rentre pas, vous pouvez quand même lire cette partie, vous aurez peut-être un déclic en pratiquant ;)

Nous commencerons dans un premier temps par découvrir ce qu'est Qt concrètement, ce que cette bibliothèque permet de faire, et quelles sont aussi les alternatives qui existent (car il n'y a pas qu'avec Qt qu'on peut créer des fenêtres !).
Nous verrons ensuite comment installer et configurer Qt.

Préparez-vous bien, parce que dès le chapitre suivant on attaque dare-dare !
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Dis papa, comment on fait des fenêtres ?

Voilà une question que vous vous êtes tous déjà posés, j'en suis sûr ! J'en mettrais même ma main à couper (et j'y tiens à ma main, c'est vous dire :p ).


Alors alors, c'est comment qu'on programme des fenêtres ? :D


Douuucement, pas d'impatience. Si vous allez trop vite vous risquez de brûler des étapes et de vous retrouver bloqué après, alors allez-y progressivement et dans l'ordre en écoutant bien tout ce que j'ai à vous dire.


Un mot de vocabulaire à connaître : GUI



Avant d'aller plus loin, je voudrais vous faire apprendre ce petit mot de vocabulaire car je vais le réutiliser tout au long de cette partie GUI (prononcez "Goui").
C'est l'abréviation de Graphical User Interface, soit "Interface utilisateur graphique". Ca désigne tout ce qu'on appelle grossièrement "Programme avec des fenêtres".

Pour bien que vous puissiez comparer, voici un programme sans GUI (en console) et un programme GUI :

Sans GUI
Programme sans GUI (console)


Avec GUI
Programme GUI, ici sous Windows Vista



Les différents moyens de créer des GUI



Chaque système d'exploitation (Windows, Mac OS, Linux...) propose au moins un moyen de créer des fenêtres... le problème, c'est justement que ce moyen n'est en général pas portable, c'est-à-dire que votre programme créé uniquement pour Windows ne pourra marcher que sous Windows et pas ailleurs.

On a grosso modo 2 types de choix :

La deuxième solution est en générale la meilleure car c'est la plus souple. C'est d'ailleurs celle que nous allons choisir pour que personne ne se sente abandonné.

Histoire d'être suffisament complet quand même, je vais dans un premier temps vous parler des bibliothèques propres aux principaux OS pour que vous connaissiez au moins leurs noms.
Ensuite, nous verrons quelles sont les principales bibliothèques multi-plateforme.


Les bibliothèques propres aux OS



Chaque OS propose au moins une bibliothèque qui permet de créer des fenêtres. Le défaut de cette méthode est qu'en général cette bibliothèque ne marche que pour l'OS pour lequel elle a été créée. Ainsi, si vous utilisez la bilbiothèque de Windows, votre programme ne marchera que sous Windows.



Comme vous le voyez, il y a en gros une bibliothèque "de base" pour chaque OS.

L'API Win32 et la Xlib proposent des fonctions de bas niveau. Il faut en général beaucoup de lignes de code avant d'avoir un rendu correct.
Quant à Cocoa, c'est une bibliothèque orientée objet qu'on ne peut utiliser que dans un langage orienté objet (traditionnellement Objective C, mais aussi Java, Python, Ruby...).

Ces bibliothèques ont le gros défaut de ne marcher que sur le système pour lequel elles ont été conçues et d'être relativement complexes, notamment l'API Win32 et la Xlib. Heureusement, il existe un grand nombre de bibliothèques multi-plateforme qui s'adaptent à tous les OS.


Les bibliothèques multi-plateforme



Les avantages d'utiliser une bibliothèque multi-plateforme sont nombreux. Même si vous voulez créer des programmes pour Windows et que vous n'en avez rien à faire de Linux et Mac OS, oui oui ;)



Bref, choisir une bibliothèque multi-plateforme, ce n'est pas seulement pour que le programme marche partout, mais aussi pour être sûr qu'il marchera tout le temps et pour avoir un certain confort en programmant.

Voici quelques-unes des principales bibliothèques multi-plateforme à connaître, au moins de nom :



Comme vous le voyez, j'ai dû faire un choix parmi tout ça ^^

Je sais que certains vont me reprocher le choix de Qt par rapport à wxWidgets. Oui j'ai hésité un temps entre les 2, car ce sont 2 très bonnes bibliothèques, mais Qt a finalement gagné car elle est facile à prendre en main. C'est donc une bibliothèque plus "pédagogique" en quelque sorte :p

Présentation de Qt

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



Image utilisateur
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 :


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 :

Abstraction offerte par 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 :


Qt sous Windows Vista
Sous Windows Vista
Qt sous Windows XP
Sous Windows XP
Image utilisateur
Sous Linux
Qt sous Mac OS X
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 dans 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 :)

Trolltech
Qt est une framework développé par la société Trolltech, basée à Oslo en Norvège.
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 :p )
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



Trolltech et le monde du logiciel libre sont très liés.
A l'origine, Qt possédait une licence propriétaire, son code source était fermé.

Heureusement, cela fait longtemps maintenant que Qt propose une double licence :


La licence de Qt est donc parfaitement adaptée à ceux qui souhaitent écrire des logiciels libres, puisqu'ils peuvent télécharger gratuitement Qt et même son code source s'ils le désirent. Par contre, dès l'instant où vous comptez créer un logiciel propriétaire, il faudra payer. Le site de Trolltech donne les tarifs (ce n'est pas abordable pour un particulier si c'est ce que vous voulez savoir :p ).

Nous considèrerons donc que nous allons diffuser le code source de nos programmes. Si vous avez l'intention plus tard de créer des programmes propriétaires, je vous conseille de vous orienter vers la bibliothèque wxWidgets qui vous autorise à faire cela.
Donc, même si vous avez l'intention de créer des programmes propriétaires plus tard, je vous conseille de suivre ce tutoriel sur Qt qui vous en apprendra beaucoup sur la création de GUI. Il ne vous sera pas difficile ensuite de passer à wxWidgets si vous le désirez.


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 !

Installation de Qt

Vous êtes prêts à installer Qt ?
On est parti !


Télécharger Qt



Commencez par télécharger Qt sur le site de Trolltech.

Dans le tableau, choisissez soit "Qt for Windows: C++", "Qt for Linux/X11: C++" ou "Qt for Mac: C++" en fonction de votre système d'exploitation.

Il y a 3 téléchargements possibles, en fonction de votre OS :



Installation sous Windows



L'installation sous Windows se présente sous la forme d'un assistant d'installation classique.
Je vais vous montrer comment ça se passe pas à pas, ce n'est pas bien compliqué.

La première fenêtre est la suivante :

Image utilisateur


Rien de particulier à signaler. Cliquez sur Next autant de fois que nécessaire en laissant les options par défaut, jusqu'à arriver à la fenêtre suivante :

Image utilisateur


Cette fenêtre vous demande si vous voulez installer MinGW, le compilateur. Normalement, vous avez déjà installé MinGW en même temps que votre IDE, donc il est déjà sur votre disque.
Toutefois, il faut que vous ayez la bonne version de MinGW avec l'API Win32 pour que Qt puisse faire la traduction correctement. Je vous recommande donc fortement de le réinstaller (ça ne pose aucun problème) dans le répertoire par défaut proposé par l'installeur, ici C:\MinGW.

Lorsque les options sont comme chez moi, cliquez sur Next.
On vous demande alors où télécharger MinGW (sur quel miroir) :

Image utilisateur


Vous n'avez pas trop le choix, vous ne pouvez télécharger MinGW que chez Trolltech sur leurs serveurs en Norvège :p
Sélectionnez donc "Trolltech (Norway)", ne cochez pas "Download MinGW source code" (on n'en a pas besoin) et cliquez sur Install.

MinGW se télécharge et s'installe tout seul :

Image utilisateur


Puis Qt s'installe enfin (il y a beaucoup de fichiers ça peut prendre un peu de temps) :

Image utilisateur


Vous êtes à la fin ? Ouf !
On vous propose d'ouvrir 2 programmes installés par Qt, ouvrez-les si vous voulez.

Image utilisateur



Les programmes installés par Qt



En plus de tous les fichiers nécessaires au développement de GUI, Qt installe 4 programmes qui pourront vous être utiles par la suite.
Je vais rapidement vous les présenter mais on ne va pas rentrer dans le détail de chacun d'eux, il est trop tôt.

Qt Examples and Demos



Image utilisateur


Ca c'est juste une démonstration des possibilités de Qt. Vous pouvez explorer ce programme autant que vous voulez, il est juste là pour présenter Qt.


Qt Assistant



Image utilisateur


Qt Assistant est la documentation de Qt. Dedans, il y a tout. Tout ce que vous avez besoin de savoir, toutes les fonctionnalités de Qt, toutes les fonctions, toutes les classes que vous pouvez utiliser.
C'est ce que vous trouverez de plus complet.

Certes, la documentation est en anglais, comme la plupart des documentations pour développeurs. Elle est néanmoins très bien faite, et savoir s'en servir est indispensable si on veut essayer d'autres choses que ce que j'expliquerai dans le tuto. Je vous apprendrai donc à la lire dans un prochain chapitre ;)

Qt Linguist



Qt Linguist


Qt Linguist est une application à destination des traducteurs. Si votre programme doit être décliné en plusieurs langues, Qt vous offre donc tous les outils dont vous pourriez avoir besoin pour les traduire.

Le gros avantage est qu'il n'y a pas besoin d'être programmeur pour traduire l'application. Il vous suffira de donner un fichier qui contient tout le texte de votre application (généré par Qt), de le donner à traduire à un traducteur avec Qt Linguist, et hop, votre application est multilingue ! :)


Qt Designer



Qt Designer


Qt Designer vous permet, vous l'aurez deviné, de créer les fenêtres de vos applications à la souris.

Normalement, une fenêtre se code (on peut créer une fenêtre rien qu'avec du code sans passer par Qt Designer). Qt Designer vous fera gagner du temps... lorsque vous saurez vous servir de Qt. Avant d'utiliser Qt Designer, il faut savoir coder la fenêtre à la main !

Attention Qt Designer est un piège pour les débutants ! Il est très attirant, on pense que ça va être super simple de créer des fenêtres, mais en fait c'est bien plus complexe que cela. Vous ne DEVEZ PAS vous ruer dessus : vous ne pourriez pas vous en servir et l'exploiter correctement.
Je vous expliquerai comment fonctionne Qt Designer, mais ce sera plus tard dans le cours. Il est impératif que vous sachiez d'abord coder une fenêtre à la main, sinon vous ne pourrez pas l'utiliser correctement.

Sous ses apparences simples, Qt Designer est en fait une application complexe qu'on ne peut maîtriser que lorsqu'on a déjà de l'expérience avec Qt. Et cette expérience, on va l'acquérir au fil des chapitres qui suivent ;)

Notion de GUI... OK
Présentation des bibliothèques GUI... OK
Présentation des modules de Qt... OK
Notion de framework multi-plateforme... OK
Culture générale sur Qt... OK
Téléchargement de Qt... OK
Installation de Qt... OK
Présentation des programmes livrés avec Qt... OK


- C'est bon mon commandant, ils sont parés au lancement :ninja:
- Ouvrez le sas et accrochez-vous lieutenant, ça risque de bouger un peu :pirate:
Chapitre précédent Sommaire Chapitre suivant
Retour en haut Retour en haut


Créé : le 18/09/2007 à 17:13:58
Modifié : le 23/10/2008 à 14:17:50
Avancement : 100%
Licence : Copie non autorisée

27 commentaires

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 86 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0738s (0.0603s)