IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Ecrire sa première application avec Qt 4


II. Premiers pas
II-1. Premier code
II-2. Compilation et Exécution
II-3. Explications
II-4. En résumé


II. Premiers pas


II-1. Premier code

Nous allons pour commencer étudier un code assez simple. En effet, le code ci-dessous affiche simplement un bouton. Pour quitter l'application, il suffira de cliquer sur la croix, comme pour n'importe quelle application logicielle.

#include <QApplication>
#include <QPushButton>

int main(int argc, char** argv)
{
	QApplication app(argc, argv);
	QPushButton  pb("Hello, Qt!");
	pb.resize(400,100);
	pb.show();
	return app.exec();
}
Cependant, pour motiver l'utilisation de Qt, je vais rajouter une simple ligne qui fera qu'un clic sur le bouton entrainera la fermeture de l'application. Voici le code "final" que nous allons étudier dans toute cette section.

#include <QApplication>
#include <QPushButton>

int main(int argc, char** argv)
{
	QApplication app(argc, argv);
	QPushButton  pb("Hello, Qt!");
	QObject::connect(&pb, SIGNAL(clicked()), &app, SLOT(quit()));
	pb.resize(400,100);
	pb.show();
	return app.exec();
}
Il faut maintenant compiler puis exécuter cette petite application. Je vais tout d'abord vous expliquer le procédé de compilation d'une application Qt, et enfin vous pourrez exécuter l'application et la recompiler en changeant des valeurs pour vous faire la main.


II-2. Compilation et Exécution

Pour compiler un projet avec Qt 4, il y a un outil fondamental : qmake. Ce dernier est un outil faisant partie de Qt 4 (au même titre que les sources) qui vous permet de gérer tout un ensemble de fichier d'un projet, ou même tout votre projet. Voici les différentes commandes à taper dans un terminal (n'importe quel terminal sous un système Unix, Menu Démarrer > Exécuter : cmd sous Windows).

  • qmake -project : cette commande crée un fichier .pro rassemblant des informations sur les fichiers qui composent votre projet, mais surtout leurs rôles (source, en-tête, fichier de Qt Designer, ...)
  • qmake : cette commande se sert du fichier .pro créé précédemment pour générer tous les fichiers "finaux" (génère du code C++ à partir du fichier designer, ...) du projet. C'est la dernière étape avant la compilation car de plus cette commande génère le fichier contenant les règles de compilation de votre projet.
Il ne reste plus qu'à exécuter la commande de compilation que vous utilisez habituellement (nmake pour Visual C++, make pour GCC/MingW, ...) afin de compiler votre application, dont l'exécutable est par défaut dans un sous-répertoire nommé release du répertoire courant. Il vous sufit donc, pour n'importe quel projet, de taper qmake -project puis qmake et enfin make/nmake ou autre pour construire votre application. N'oubliez pas que la compilation ne s'effectue qu'à l'exécution de la dernière commande. Les deux commandes précédentes ne sont que des commandes permettant de gérer l'ensemble de votre projet, en préparant la compilation.

Enfin, il faut préciser que lorsque votre projet n'est composé que d'un seul fichier, vous pouvez le compiler directement en précisant à votre compilateur les dossiers où chercher les en-têtes de Qt, les dossiers où chercher les fichiers bibliothèques de Qt et enfin quels fichiers bibliothèques de Qt il faut lier au programme (ce que gère automatiquement qmake).

Il existe sur developpez un tutoriel qui examine plus en profondeur ce que fait qmake et comment personnaliser son fichier de projet .pro, disponible ici : fr Compilation de projets Qt 4.

En supposant que vous avez compilé votre projet dans le répertoire PremierPas/, alors votre exécutable doit se situer dans le répertoire PremierPas/release/ et en principe porte le nom PremierPas (l'extension dépend de votre système d'exploitation, évidemment). Par défaut qmake prépare pour une compilation en mode Release. Il est cependant possible de préparer la compilation pour le mode Debug. Pour cela, je vous invite à consulter le tutoriel sur la compilation des projets Qt 4 mentionné ci-dessus. En exécutant, vous devez obtenir quelque chose de similaire à l'une des images suivantes.

Maintenant que vous savez ce que donne le code précédent une fois compilé, il est temps que vous compreniez chacune de ses lignes, afin de pouvoir ensuite écrire des codes plus complexes avec Qt 4.


II-3. Explications

Nous allons étudier morceau par morceau le code précédent pour en comprendre chaque ligne.

#include <QApplication>
#include <QPushButton>
Ces directives d'inclusions permettent d'utiliser dans notre code les classes QApplication et QPushButton. La classe QApplication sert, comme son nom l'indique, à créer une application Qt. On transmet à son constructeur les arguments donnés au programme car QApplication permet de les gérer. Enfin, la classe QPushButton permet d'intégrer un bouton dans notre application.

Il faut savoir dès maintenant que lorsque vous utilisez une classe QXYZ, il faut inclure à un moment ou un autre l'en-tête <QXYZ>.

int main(int argc, char** argv)
{
...
}
Il s'agit de la fonction main habituelle, qui tient le même rôle que d'habitude même lorsqu'il s'agit d'une application Qt 4 : il faut y placer le code qui sera exécuté dès le lancement de l'application.

QApplication app(argc, argv);
Comme il est dit plus haut, on crée une instance de la classe QApplication, nommée app, avec comme arguments pour le constructeur ceux de la fonction main.

QPushButton pb("Hello, Qt !");
On crée ici un bouton, sur lequel sera écrit "Hello, Qt !". La chaîne de caractère que l'on passe au constructeur de QPushButton est de type QString, dont l'utilisation est transparente, grâce à la façon dont est conçue la bibliothèque.

QObject::connect(&pb, SIGNAL(clicked()), &app, SLOT(quit()));
La fameuse ligne qu'il a fallu rajouter précédemment. Elle sert à connecter le clic sur le bouton à la fermeture de l'application. Nous étudierons plus tard ce système de connexion, dans la section IV : Créer une fenêtre complexe.

pb.resize(400,100);
pb.show();
Le code redimensionne notre bouton (400 pixels en largeur, 100 pixels en hauteur), grâce à la méthode resize, puis affiche notre bouton grâce à la méthode show.

info Par défaut, tous les composants visuels, dont fait partie QPushButton, sont cachés. Il faut appeler la méthode show pour les afficher.

return app.exec();
Comme mentionné plus haut, l'instance de QApplication gère notre application et en particulier si un problème grave survient, obligeant à fermer l'application, app.exec() retournera une valeur d'erreur adaptée, ce qui nous permet de ne pas nous soucier de ce genre de choses et de nous concentrer pour le moment sur la conception de notre interface graphique.


II-4. En résumé

Vous avez donc écrit votre premier code C++ utilisant Qt, puis vous avez appris à compiler ce dernier, en voyant ensuite ce que donnait son exécution. La section précédente vous a de plus normalement permis de comprendre ce code, ce qui va vous permettre de vous atteler à une tâche qui se trouve un niveau au-dessus sur l'échelle de la difficulté : l'affichage de plusieurs composants visuels. La section suivante va donc vous expliquer comme faire cela, mais aussi comment ordonner ses composants sur la fenêtre grâce aux gestionnaires de dispositions (layouts, en anglais). Un petit point de vocabulaire pour terminer cette section :

info Dans la suite de ce tutoriel, le mot widget sera utilisé pour désigner un composant visuel. Il s'agit d'un anglicisme très utilisé dans les documentations techniques en rapport avec les interfaces graphiques. Par conséquent, il est bon de s'y habituer et de plus, il est assez court à écrire ;-)
 

Valid XHTML 1.1!Valid CSS!

Copyright © 2007 Alp Mestan. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.