Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Programmation > Bibliothèques > Qt > Du Qt en Java avec Qt Jambi > Introduction à Qt Jambi > Codons notre première fenêtre > Lecture du tutoriel

Codons notre première fenêtre

Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Avatar
Auteur : Natim
Visualisations : 3 158

Plus d'informations Plus d'informations
Dans ce tutoriel, nous allons voir les bases de la création d'un projet en utilisant Qt Jambi.
Nous verrons comment ouvrir une fenêtre.

En avant
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Code minimal d'un projet Qt Jambi

Un projet en Java est composé d'au moins une classe contenant une fonction main.
Selon votre IDE, vous pouvez créer un projet Java et y ajouter les librairies (qtjambi.jar en l'occurence)

Voici a quoi doit ressembler la methode main de votre objet principal :
Code : Java
1
2
3
4
5
6
7
import com.trolltech.qt.gui.QApplication;
...
public static void main(String[] args) {
   QApplication.initialize(args);
 
   QApplication.exec();
}


C'est le code minimal d'une application Qt en java.
Comme vous pouvez le constater, c'est vraiment très court et c'est un des points forts de Qt.

Analysons Pas à Pas ...



Import ...



Code : Java
1
import com.trolltech.qt.gui.QApplication;

On utilise la classe QApplication de Jambi qui est la classe de base de tout programme Qt.
Il faut donc la situer dans l'arborescence pour que le compilateur java la retrouve.

J'ai utilisé le chemin complet car je n'ai utilisé que cet objet.
On peut aussi décider d'inclure tous les objets du GUI comme ceci :

Code : Java
1
import com.trolltech.qt.gui.*;


D'un point de vue performance ça ne change rien.
D'un point de vue lisibilité du code, ça peut permettre à un programmeur de voir tout de suite de quoi il va s'agir et ce que la classe va utiliser.

Je vais dans ce cours utiliser des import explicites dans la mesure du possible (tant que ça ne nuit pas à la lisibilité).

QApplication, la classe de base


La première ligne du main crée un nouvel objet de type QApplication.
Cet objet est un Singleton (une classe dont il n'existe qu'une seule instance), cela veut dire qu'on n'en créé aucun objet, on l'utilise seulement.

À la différence du C++, il n'y a pas de constructeur puisqu'on ne créé pas d'objet QApplication.
On utilise donc la méthode statique initialize de la classe QApplication pour initialiser l'application et c'est cette méthode qui s'occupe de créer l'instance unique.

De manière à pouvoir passer des ordres (comme des options d'affichages par exemple) au framework Qt, on donne les paramètres de la ligne de commande.

Lancement de l'application


La méthode statique de la classe QApplication permet de lancer l'application.
Entre l'initialisation et l'exécution, on va créer nos objets (boites de dialogues, fenêtres, ...).
Ce n'est que lors de l'exécution de cette méthode que tout va s'enclencher.

Lorsque la méthode exec s'arrête, notre programme est terminé.

Affichage d'un widget

Dans la plupart des bibliothèques GUI, dont Qt fait partie, tous les éléments d'une fenêtre sont appelés des widgets. Les boutons, les cases à cocher, les images... tout ça ce sont des widgets. La fenêtre elle-même est considérée comme un widget.

Pour provoquer l'affichage d'une fenêtre, il suffit de demander à afficher n'importe quel widget. Ici par exemple, nous allons afficher un bouton.

Voici le code complet que j'aimerais que vous utilisiez. Il utilise le code de base de tout à l'heure mais y ajoute quelques lignes :

Code : Java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import com.trolltech.qt.gui.QApplication;
import com.trolltech.qt.gui.QPushButton;
...
public static void main(String[] args) {
   QApplication.initialize(args);
 
   QPushButton bouton = new QPushButton("Salut les Zéros, la forme ?"); 
   bouton.show();
 
   QApplication.exec();
}


On a ajouté un import, celui de notre nouveau widget le QPushButton (un bouton poussoir pour les anglophobes).

On crée notre objet bouton avec comme texte "Salut les Zéros, la forme ?"
Et on l'affiche.

Comme un bouton ne peut pas "flotter" comme ça sur votre écran, Qt l'insère automatiquement dans une fenêtre. On a en quelque sorte créé une "fenêtre-bouton" :p .

Bien entendu, dans un vrai programme plus complexe, on crée d'abord une fenêtre et on y insère ensuite plusieurs widgets, mais là on commence simplement ;) .

Notre code est prêt, il ne reste plus qu'à compiler et exécuter le programme !

Compilation de notre premier programme en Qt Jambi

La classe Test.java



Pour les exemples, je préfère vous donner le fichier complet :

Test.java
Code : Java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import com.trolltech.qt.gui.QApplication;
import com.trolltech.qt.gui.QPushButton;
 
public class Test
{
    public static void main(String[] args) {
       QApplication.initialize(args);
 
       QPushButton bouton = new QPushButton("Salut les Zéros, la forme ?");
       bouton.show();
 
       QApplication.exec();
    }
}


Compilation



Si vous avez tout installé convenablement, un simple javac devrait fonctionner.
Code : Console
javac Test.java


Si votre classpath n'est pas bien défini, ça ne marchera pas ...
Je vous conseille de le définir (ça dépend de votre système d'exploitation)

Sinon, vous pouvez le définir juste pour cette commande comme cela :
Code : Console
javac -cp /chemin/de/qtjambi.jar:. Test.java


Sous Windows ça ressemblera surement plus à :
Code : Console
javac -cp c:\chemin\de\qtjambi.jar:. Test.java


Lancement



Pour les utilisateurs de Windows et Linux :
Code : Console
java Test


Pour les utilisateurs de Mac OS X :
Code : Console
java -XstartOnFirstThread Test

Améliorons notre application ...

Tout à l'heure, on a un peu innové en transformant le Hello World habituel par un Salut les Zéros, la forme ?

Maintenant, on peut s'amuser un petit peu avec notre fenêtre-bouton.
Ce qui serait bien serait que l'on puisse cliquer sur le bouton pour fermer la fenêtre.
On peut aussi fixer une taille par défaut ou changer la couleur et la police.
Mettre un titre à la fenêtre aussi.

Code : Java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import com.trolltech.qt.core.*;
import com.trolltech.qt.gui.*;
 
public class HelloWorld
{
    public static void main(String args[])
    {
      // Initialise l'application Qt
      QApplication.initialize(args);
 
      // Crée un bouton poussoir, bouton, dont le texte est Salut les Zéros, la forme ?
      QPushButton bouton = new QPushButton("Salut les Zéros, la forme ?");
 
      // Fixe la taille du bouton à 120x40
      bouton.resize(120, 40);
 
      // Fixe la police de caractères en Times 18 Gras
      bouton.setFont(new QFont("Times", 18, QFont.Weight.Bold.value()));
 
      // Définit l'action du clic sur le bouton. (on quitte l'application)
      bouton.clicked.connect(QApplication.instance(), "quit()");
 
      // Fixe le titre de la fenêtre
      bouton.setWindowTitle("Hello World");
 
      // Affiche le bouton
      bouton.show();
 
      // Lance l'application //
      QApplication.exec();
    }
}


C'est bien commenté donc je doute que vous ayez des problèmes pour comprendre.

Il y a un point un peu plus compliqué :
Code : Java
1
bouton.clicked.connect(QApplication.instance(), "quit()");


La méthode connect va nous permettre de mettre une action sur un widget.
En l'occurrence, on décide de connecter l'action cliked() de notre bouton à la méthode quit() de notre objet QApplication.

Comme QApplication est une classe statique et que la fonction connect attend une instance d'objet, la classe QApplication possède une méthode instance() qui permet de retourner l'objet de notre application principale.

Ce que je vous disais tout à l'heure à propos de QApplication, c'est qu'on l'utilisait en temps que classe statique.
Et cela est une protection. Pour être sûr que les programmeurs ne créent pas deux objets QApplication dans le même programme, les développeurs du framework ont décidé que ce serait la classe elle même qui allait gérer son propre et unique objet.

Cet objet est créé par la méthode statique initialize(). Et lorsqu'on a besoin de l'objet, on utilise la méthode statique instance() pour le récupérer.

Comme cela, on est sur de parler toujours du même objet et en plus on a pas besoin de se demander si on a accès à notre objet. Il suffit d'importer QApplication pour y avoir accès.

On importe les dépendances et ensuite on crée une simple fenêtre avec un bouton qui quitte l'application lorsque l'on clique dessus.

Si vous souhaitez compiler en ligne de commande :

Code : Console
# Compiler
javac HelloWorld.java
# Lancer
java HelloWorld.java


Première application en Qt Jambi : Hello World !


Si vous n'avez aucune erreur, c'est que vous êtes prêts à continuer et que vous êtes relativement habiles avec Java.
Si vous avez des erreurs, c'est que tout n'est pas encore très bien configurer et qu'il vous faut relire le chapitre expliquant comment installer Qt Jambi.

Nous y sommes enfin arrivés, champagne ! :D

Vous l'avez vu, le code nécessaire pour ouvrir une fenêtre toute simple constituée d'un bouton est ridicule. Quelques lignes à peine, et rien de bien compliqué à comprendre au final.
C'est ce qui fait la force de Qt : "un code simple est un beau code" dit-on. Qt s'efforce de respecter ce dicton à la lettre, vous vous en rendrez compte dans les prochains chapitres.

Dans les prochains chapitres, nous allons voir comment changer l'apparence du bouton, comment faire une fenêtre un peu plus complexe. Nous découvrirons aussi le mécanisme des signaux et des slots, un des principes les plus importants de Qt qui permet de gérer les évènements : un clic sur un bouton pourra par exemple provoquer l'ouverture d'une nouvelle fenêtre ou sa fermeture !
Chapitre précédent Sommaire Chapitre suivant
Retour en haut Retour en haut


Créé : le 13/10/2007 à 04:20:33
Modifié : le 08/11/2008 à 20:41:36
Avancement : 100%
Licence : Creative Commons BY-SA

L'orthographe, la grammaire et la présentation de ce tutoriel ont été vérifiées par les zCorrecteurs.
2 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 129 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0265s (0.0149s)