Aller au menu - Aller au contenu

Icône Introduction à Qt

Avatar
Mise à jour : 27/05/2011
Difficulté : Facile Facile Creative Commons BY-NC-SA
98 774 visites depuis 7 jours , dont 2 361 sur ce chapitre , classé 5/777
Les amis, le temps n'est plus aux bavardages mais au concret !
Vous trouverez difficilement plus concret que cette partie du cours ^^

Pour bien pouvoir comprendre cette partie, il est vital que vous ayez lu et compris le début de ce cours.
Si certaines notions de la programmation orientée objet vous sont encore un peu obscures, n'hésitez pas à faire un tour à nouveau sur les chapitres correspondants. 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



Les différents moyens de créer des GUI



Chaque système d'exploitation (Windows, Mac OS X, 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 :
  • Soit on écrit son application spécialement pour l'OS qu'on veut, mais le programme ne sera pas portable.
  • Soit on utilise une bibliothèque qui s'adapte à tous les OS, c'est-à-dire une bibliothèque multi-plateforme.

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.

  • Sous Windows : on dispose du framework .NET. C'est un ensemble très complet de bibliothèques utilisables en C++, C#, Visual Basic... Le langage de prédilection pour travailler avec .NET est C#. A noter que .NET peut aussi être utilisé sous Linux (avec quelques limitations) grâce au projet Mono.
    En somme, .NET est un vrai couteau suisse pour développer sous Windows et on peut aussi faire fonctionner les programmes sous Linux à quelques exceptions près.
  • Sous Mac OS X : la bibliothèque de prédilection s'appelle Cocoa. On l'utilise en général en langage "Objective C". C'est une bibliothèque orientée objet.
  • Sous Linux : tous les environnements de bureaux (appelés WM, Windows Managers) reposent sur X, la base des interfaces graphiques de Linux. X propose une bibliothèque appelée Xlib, mais on programme rarement en Xlib sous Linux. On préfère utiliser une bibliothèque plus simple d'utilisation et multi-plateforme comme GTK+ (sous Gnome) ou Qt (sous KDE).


Comme vous le voyez, il y a en gros une bibliothèque "de base" pour chaque OS. Certaines, comme Cocoa, ne fonctionnent que pour le système d'exploitation pour lequel elles ont été prévues. Il est généralement conseillé d'utiliser une bibliothèque multi-plateforme si vous comptez distribuer votre programme à un grand nombre de personnes.

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 ;)

  • Tout d'abord, elles simplifient grandement la création d'une fenêtre. Il faut beaucoup moins de lignes de code pour ouvrir une "simple" fenêtre.
  • Ensuite, elles uniformisent le tout, elles forment un ensemble cohérent qui fait qu'il est facile de s'y retrouver. Les noms des fonctions et des classes sont choisis de manière logique de manière à vous aider autant que possible.
  • Enfin, elles font abstraction du système d'exploitation mais aussi de la version du système. Cela veut dire que si demain Cocoa cesse d'être utilisable sous Mac OS X, votre application continuera à fonctionner car la bibliothèque multi-plateforme s'adaptera aux changements.


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 :

  • .NET (prononcez "Dot Net") : développé par Microsoft pour succéder à la vieillissante API Win32. On l'utilise souvent en langage C#. On peut néanmoins utiliser .NET dans une multitude d'autres langages dont le C++.
    .NET est portable car Microsoft a expliqué son fonctionnement. Ainsi, on peut utiliser un programme écrit en .NET sous Linux avec Mono. Pour le moment néanmoins, .NET est principalement utilisé sous Windows.
  • GTK+ : une des plus importantes bibliothèques utilisées sous Linux. Elle est portable, c'est-à-dire utilisable sous Linux, Mac OS et Windows. GTK+ est utilisable en C. Néanmoins, il existe une version C++ appelée GTKmm (on parle de wrapper, ou encore de surcouche).
    GTK+ est la bibliothèque de prédilection pour ceux qui écrivent des applications pour Gnome sous Linux, mais elle fonctionne aussi sous KDE.
    C'est la bibliothèque utilisée par Firefox par exemple, pour ne citer que lui.
  • Qt : bon je ne vous la présente pas trop longuement ici car tout ce chapitre est là pour ça. :p
    Sachez néanmoins que Qt est très utilisée sous Linux aussi, en particulier sous l'environnement de bureau KDE.
  • wxWidgets : une bibliothèque objet très complète elle aussi, comparable en gros à Qt. Sa licence est très semblable à celle de Qt (elle vous autorise à créer des programmes propriétaires). Néanmoins, j'ai choisi quand même de vous montrer Qt car cette bibliothèque est plus facile à prendre en main au début. Sachez qu'une fois qu'on l'a prise en main, wxWidgets n'est pas beaucoup plus compliquée que Qt.
    wxWidgets est la bibliothèque utilisée pour réaliser le GUI de l'IDE Code::Blocks.
  • FLTK : contrairement à toutes les bibliothèques "poids lourd" précédentes, FLTK se veut légère. C'est une petite bibliothèque dédiée uniquement à la création d'interfaces graphiques multi-plateforme.


Comme vous le voyez, j'ai dû faire un choix parmi tout ça. ^^
C'est la qualité de la bibliothèque Qt et de sa documentation qui m'a convaincu de vous la présenter.

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



Logo Qt
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 :

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



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 :

  • Adobe
  • Archos
  • Boeing
  • Google
  • NASA
  • Skype


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 Qt.

On vous demande de choisir entre la version LGPL et la version commerciale. Comme je vous l'ai expliqué plus tôt, nous allons utiliser la version qui est sous licence LGPL.

Vous devez ensuite choisir entre :

  • Qt SDK : la bibliothèque Qt + un ensemble d'outils pour développer avec Qt, incluant un IDE spécial appelé Qt Creator.
  • Qt Framework : contient uniquement la bibliothèque Qt.

Je vous propose de prendre le Qt SDK, car il contient un certain nombre d'outils qui vont grandement nous simplifier la vie. :)

Choisissez soit "Qt pour Windows: C++", "Qt pour Linux/X11: C++" ou "Qt pour Mac: C++" en fonction de votre système d'exploitation.
Dans la suite de ce chapitre, je vous présenterai l'installation du Qt SDK sous Windows.

Si vous êtes sous Linux, et notamment sous Debian ou Ubuntu, je vous recommande d'installer directement le paquet qtcreator avec la commande apt-get install qtcreator. La version sera peut-être légèrement plus ancienne mais l'installation sera ainsi centralisée et plus facile à gérer.


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 :

Installation de Qt


Il n'y a rien de particulier à signaler. Cliquez sur Next autant de fois que nécessaire en laissant les options par défaut. Qt s'installe ensuite (il y a beaucoup de fichiers ça peut prendre un peu de temps) :

Installation de Qt en cours


Vous êtes à la fin ? Ouf !
On vous propose d'ouvrir le programme Qt Creator qui a été installé en plus de la bibliothèque Qt. Ce programme est un IDE spécialement optimisé pour travailler avec Qt. Je vous invite à le lancer :

Fin de l'installation



Qt Creator



Bien qu'il soit possible de développer en C++ avec Qt en utilisant notre IDE (comme Code::Blocks) je vous recommande fortement d'utiliser l'IDE Qt Creator que nous venons d'installer. Il est particulièrement optimisé pour développer avec Qt. En effet, c'est un programme tout-en-un qui comprend entre autres :

  • Un IDE pour développer en C++, optimisé pour compiler des projets utilisant Qt (pas de configuration fastidieuse)
  • Un éditeur de fenêtres, qui permet de dessiner facilement le contenu de ses interfaces à la souris
  • Une documentation in-dis-pen-sable pour tout savoir sur Qt

Voici à quoi ressemble Qt Creator lorsque vous le lancez pour la première fois :

Qt Creator


Comme vous le voyez, c'est un outil très propre et très bien fait. Avant que Qt Creator n'apparaisse, il fallait effectuer des configurations parfois complexes pour compiler des projets utilisant Qt. Désormais tout est transparent pour le développeur ! :)

Dans le prochain chapitre, nous découvrirons comment utiliser Qt Creator pour développer notre premier projet Qt. Nous y compilerons notre toute première fenêtre !
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

Partager

67 commentaires pour "Introduction à Qt"
Note moyenne : 3.86 / 4 (1684 votes)
Pseudo Commentaire
Hors ligne nono98 # Posté le 05/07/2011 à 11:34:47

heeeeeeeelp j'arrive pas à telecharger le QT sdk correctement :'(
soit on me dit que la version est incomplète soit la fenetre de l'installation ne s'aafiche pas lors de l'installation
svp aidez moi c'est très urgent :'( :'( :'(


merci d'avance
Hors ligne battquif # Posté le 17/07/2011 à 11:59:42
Avatar

bonjour j'avait installer Qt creator il y a quelque temps.J'avait fait tous se qu'il fallait faire mais sa ne marcher pas alors j'ai chercher comment faire mais maintenant quand je vais sur le site de téléchargement se n'est plus comme avant il n'y a plus LPGL(ou un truc du genre)et commerciale alors je voudrait savoir si c'est moi qui ne suis pas la ou il faut ou si une mise a jour du tuto va ètre fait...


merci d'avance

doodle jump de marche que sur les tactile!!! ;) Alors ne gaspiller pas d'argent!!!

 
Hors ligne reza # Posté le 01/08/2011 à 14:38:19
la cuillere n'existe pas
Avatar

Une fois de plus merci Nanoc et M@teo de prendre le temps de rediger des tuto aussi accessible pour les gr0s zer0 que nous sommes.

J'en profite pour filer un petit coup de main a ceux et celles qui comme moi sont sous OS X 10.5 et n'arrive pas a installer Qt SDK.
Ne perdez pas de temps a le telecharger sa marche pas avec Leopard.

Pour plus d'infos rendez vous sur ce topic

"C'est plus confortable de travailler avec un string" -La prof a m@teo :lol: (a propos du C++ biens sur)
 
Hors ligne Jérôme Deuchnord # Posté le 10/09/2011 à 16:51:09
Ma config est sur ma page
Avatar

Il y a eu une mise à jour du site de Qt : le téléchargement de Qt SDK est maintenant disponible dans la toute première partie du site. ;)
Merci en tout cas pour cet excellent tutoriel :)

Jérôme Deuchnord
Lorsque quelqu'un vous a aidé, remerciez-le avec un Cette réponse m'a aidé !
Votre problème est résolu ? Marquer résolu
Vous avez résolu votre problème tout seul, comme un grand ? Indiquez comment, ça peut aider d'autres Zéros qui ont le même problème !
 
Hors ligne sonleo99 # Posté le 19/10/2011 à 15:32:44

Avis : Très bon

Boujour

Alors voila j'ai un probleme avec Qt

Soit c'est que Qt possaide quelque chose de malveillants soit c'est mon Anti virus qui a un petit probleme car il me dit que un fichier (XTAR.EXE) dans Qt possaide un "PDM.Worm.P2P.generic"!

Voir tous les commentaires