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 > Créer une fenêtre > Disposer les choses > Lecture du tutoriel

Disposer les choses

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

Plus d'informations Plus d'informations
Pour pouvoir organiser les objets Qt comme vous le souhaitez dans vos fenêtres, il va falloir apprendre à les disposer.
Et connaître les objets nécessaires.
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Trois types de disposition

Pour disposer les objets dans une fenêtre, on a trois possibilités :


En Anglais, disposition se traduit par Layout.


Voici à quoi ça ressemble :

QHBoxLayout
QHBoxLayout


QVBoxLayout
QVBoxLayout


QGridLayout
QGridLayout

QHBoxLayout

Le QHBoxLayout permet d'aligner des objets horizontalement.

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
33
34
35
import com.trolltech.qt.gui.QApplication;
import com.trolltech.qt.gui.QWidget;
import com.trolltech.qt.gui.QPushButton;
import com.trolltech.qt.gui.QHBoxLayout;
 
public class LoginBox extends QWidget
{
        public LoginBox()
        {
            QPushButton button1 = new QPushButton("One");
            QPushButton button2 = new QPushButton("Two");
            QPushButton button3 = new QPushButton("Three");
            QPushButton button4 = new QPushButton("Four");
            QPushButton button5 = new QPushButton("Five");
 
            QHBoxLayout layout = new QHBoxLayout();
            layout.addWidget(button1);
            layout.addWidget(button2);
            layout.addWidget(button3);
            layout.addWidget(button4);
            layout.addWidget(button5);
 
            setLayout(layout);
        }
        
        public static void main(String args[])
        {
            QApplication.initialize(args);
        
            LoginBox widget = new LoginBox();
            widget.show();
        
            QApplication.exec();
        }
}


Comme on peut le voir, ce n'est pas bien compliqué.

Code : Java
1
QHBoxLayout layout = new QHBoxLayout();

On crée un Layout

Code : Java
1
2
3
4
5
layout.addWidget(button1);
layout.addWidget(button2);
layout.addWidget(button3);
layout.addWidget(button4);
layout.addWidget(button5);

Puis on ajoute des widgets dedans (dans l'ordre)

Code : Java
1
setLayout(layout);

On fixe le layout comme élément principal du Widget.

À noter qu'il y a deux méthodes pour fixer l'élément central :
  • setLayout()
  • setWidget()

De même, si on voulait ajouter un layout dans un autre layout on utiliserait addLayout() et non addWidget()
.

QVBoxLayout

Cela fonctionne exactement de la même manière que pour QHBoxLayout sauf que c'est vertical.

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
33
34
35
import com.trolltech.qt.gui.QApplication;
import com.trolltech.qt.gui.QWidget;
import com.trolltech.qt.gui.QPushButton;
import com.trolltech.qt.gui.QVBoxLayout;
 
public class LoginBox extends QWidget
{
        public LoginBox()
        {
            QPushButton button1 = new QPushButton("One");
            QPushButton button2 = new QPushButton("Two");
            QPushButton button3 = new QPushButton("Three");
            QPushButton button4 = new QPushButton("Four");
            QPushButton button5 = new QPushButton("Five");
 
            QVBoxLayout layout = new QVBoxLayout();
            layout.addWidget(button1);
            layout.addWidget(button2);
            layout.addWidget(button3);
            layout.addWidget(button4);
            layout.addWidget(button5);
 
            setLayout(layout);
        }
        
        public static void main(String args[])
        {
            QApplication.initialize(args);
        
            LoginBox widget = new LoginBox();
            widget.show();
        
            QApplication.exec();
        }
}


La seule chose qui change, c'est la classe du layout utilisé de QHBoxLayout à QVBoxLayout.

QGridLayout

Avec QGridLayout, les choses se modifient un petit peu.

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
33
34
35
import com.trolltech.qt.gui.QApplication;
import com.trolltech.qt.gui.QWidget;
import com.trolltech.qt.gui.QPushButton;
import com.trolltech.qt.gui.QGridLayout;
 
public class GridBox extends QWidget
{
        public GridBox()
        {
            QPushButton button1 = new QPushButton("One");
            QPushButton button2 = new QPushButton("Two");
            QPushButton button3 = new QPushButton("Three");
            QPushButton button4 = new QPushButton("Four");
            QPushButton button5 = new QPushButton("Five");
 
            QGridLayout layout = new QGridLayout();
            layout.addWidget(button1, 0, 0);
            layout.addWidget(button2, 0, 1);
            layout.addWidget(button3, 1, 0, 1, 2);
            layout.addWidget(button4, 2, 0);
            layout.addWidget(button5, 2, 1);
 
            setLayout(layout);
        }
 
    public static void main(String args[])
    {
        QApplication.initialize(args);
   
        GridBox widget = new GridBox();
        widget.show();
   
        QApplication.exec();
    }
}


Pour chaque Widget ou Layout qu'on ajoute à notre Grid, on définie sa case de départ (ligne, colonne) et si elle fait plus de une case on donne le nombre de cases qu'elle prend sur la ligne et sur la colonne. (rowspan, colspan)

La première ligne et la première colonne commencent à 0 donc, le premier bouton se trouve en (0,0), le deuxième sur la même ligne mais dans la cellule 1 (0,1).

Le bouton de la ligne deux va prendre 2 cases. Il commence à la cellule 1 de la 2ème ligne (0,1) et s'étend sur une ligne et deux colonnes (0, 1, 1, 2).

Exercice

Maintenant, il faut pratiquer un peu.

Voici à quoi doit ressembler votre fenêtre :

Fenêtre de connexion jTalk


Cette fenêtre vous permet de mettre en pratique tous les types de dispositions vus précédemment (Bien qu'on puisse tous les faire avec des Grilles) :


Pour les widgets, on utilise :


Aide



Comment utiliser QGroupBox ?



Code : Java
1
2
3
4
5
QGridLayout loginLayout = new QGridLayout();
// On fabrique le layout ou le widget principal
loginGroup.setLayout(loginLayout);
// ou 
loginGroup.setWidget(loginWidget);


Comment utiliser QDialogButtonBox ?



Code : Java
1
2
3
QDialogButtonBox boutons = new QDialogButtonBox();
boutons.addButton(QDialogButtonBox.StandardButton.Ok);
boutons.addButton(QDialogButtonBox.StandardButton.Cancel);


Et pour les autres ?



Pour les autres widget, on lit la documentation et on fait marcher ses méninges

Vous pouvez maintenant commencer à créer vos propres fenêtres.
Mais il va nous falloir apprendre à les utiliser.
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:37
Avancement : 0%
Licence : Creative Commons BY-SA

L'orthographe, la grammaire et la présentation de ce tutoriel ont été vérifiées par les zCorrecteurs.
1 commentaire

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 193 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0669s (0.0551s)