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 > Une boite de dialogue > Lecture du tutoriel

Une boite de dialogue

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 561

Plus d'informations Plus d'informations
Maintenant qu'on sait disposer nos objets dans nos widgets, il faut finalement mettre ce widget dans une fenêtre pour pouvoir l'afficher.

Mais jusque là tout s'affichait très bien ? o_O
Oui car votre gestionnaire de fenêtres ne pouvant pas afficher un widget seul nous créait une fenêtre pour que nous puissions afficher notre widget.
Mais si on veut changer le titre par exemple, il nous faut une vraie fenêtre.
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

L'objet QDialog

Voici ce que permettent les boites de dialogue :


Une boite de dialogue est là pour une interaction brève avec l'utilisateur.

Une première boite de dialogue

Cette première boite de dialogue me permettra de corriger l'exercice précédent.

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import com.trolltech.qt.gui.*;
 
public class LoginBox extends QWidget
{
        /* Données dont un accès peut-être utile depuis le reste de la classe */
    private QLineEdit loginLineEdit;
    private QLineEdit passwordLineEdit;
    private QLineEdit serverLineEdit;
    private QLineEdit portLineEdit;
    private QCheckBox sslCheckBox;
    private QLineEdit ressourceLineEdit;
    
        public LoginBox()
        {
        /** Login's GroupBox' **/
        QGroupBox loginGroup = new QGroupBox(tr("Login's informations:"));
 
        /* Login Line Edit with Label */
        QLabel loginLabel = new QLabel(tr("Jabber ID:"));
        loginLineEdit = new QLineEdit();
        loginLineEdit.setFocus();
        
        /* Password LineEdit with Label */
        QLabel passwordLabel = new QLabel(tr("Password:"));
        passwordLineEdit = new QLineEdit();
        passwordLineEdit.setEchoMode(QLineEdit.EchoMode.Password);
        
        /* Login's Layout */
        QGridLayout loginLayout = new QGridLayout();
        loginLayout.addWidget(loginLabel, 0, 0);
        loginLayout.addWidget(loginLineEdit, 0, 1);
        loginLayout.addWidget(passwordLabel, 1, 0);
        loginLayout.addWidget(passwordLineEdit, 1, 1);
        loginGroup.setLayout(loginLayout);
        
        /** Account GroupBox **/
        QGroupBox accountGroup = new QGroupBox(tr("Server settings:"));
 
        /* Server Line Edit with Label */
        QLabel serverLabel = new QLabel(tr("Server:"));
        serverLineEdit = new QLineEdit();
        
        /* Port LineEdit with Label and SSL selection */
        QLabel portLabel = new QLabel(tr("Port:"));
        portLineEdit = new QLineEdit("5222");
        sslCheckBox = new QCheckBox(tr("Using SSL"));
        
        /* Ressource Line Edit with Label */
        QLabel ressourceLabel = new QLabel(tr("Ressource:"));
        ressourceLineEdit = new QLineEdit("jTalk");
        
        /* Login's Layout */
        QGridLayout accountLayout = new QGridLayout();
        accountLayout.addWidget(serverLabel, 0, 0);
        accountLayout.addWidget(serverLineEdit, 0, 1, 1, 2);
        accountLayout.addWidget(portLabel, 1, 0);
        accountLayout.addWidget(portLineEdit, 1, 1);
        accountLayout.addWidget(sslCheckBox, 1, 2);
        accountLayout.addWidget(ressourceLabel, 2, 0);
        accountLayout.addWidget(ressourceLineEdit, 2, 1, 1, 2);
        accountGroup.setLayout(accountLayout);
        
        /* Dialog Button Box */
        QDialogButtonBox boutons = new QDialogButtonBox();
                boutons.addButton(QDialogButtonBox.StandardButton.Ok);
                boutons.addButton(QDialogButtonBox.StandardButton.Cancel);
        
        // Dialog Layout
        QGridLayout layout = new QGridLayout();
        layout.addWidget(loginGroup, 0, 0);
        layout.addWidget(accountGroup, 1, 0);
        layout.addWidget(boutons, 2, 0);
        setLayout(layout);
        setWindowTitle(tr("Jabber Account Configuration"));
        setLayout(layout);
        }
        
        public static void main(String args[])
        {
            QApplication.initialize(args);
        
            LoginBox widget = new LoginBox();
            widget.show();
        
            QApplication.exec();
        }
}


On peut noter le setTitle() permettant de donner un titre à la fenêtre.
Notre fenêtre est redimensionnable.

Les boites de dialogues par défaut

Il existe tout un tas de boites de dialogue qui retournent un QMessageBox.StandardButton convertible implicitement en int.

On les trouve comme attributs de QMessageBox.

Code : Java
1
2
3
QMessageBox.warning(null, tr("My Application"),
                         tr("The document has been modified.\n"+
                         "Do you want to save your changes?"), new QMessageBox.StandardButtons(QMessageBox.StandardButton.Save, QMessageBox.StandardButton.Discard, QMessageBox.StandardButton.Cancel));


Le fait d'ajouter le bouton Cancel vous permet d'utiliser Esc pour quitter la fenêtre.
Si vous souhaitez en mettre un autre, il faut utiliser setEscapeButton().
Vous pouvez aussi utiliser setDefaultButton() pour utiliser la touche Entrée.

En utilisant les boutons standards on a l'avantage de ne pas s'en préoccuper.

Warning message box

De manière à coller avec les règles graphiques de chaque système, on se rend compte que je n'ai pas de titre dans ma message box et que l'icône qui devait être un warning est en fait celui du programme. (Ici une console car je lance java en console)

Il est temps de passer à un peu de pratique ...
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 : 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.
0 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 203 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0229s (0.0116s)