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 application avec des menus et des toolbars > Lecture du tutoriel

Une application avec des menus et des toolbars

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 691

Plus d'informations Plus d'informations
Le plus souvent, pour organiser tout cela, on utilise des menus, des barres d'outils et une barre de status.
Qt nous propose un objet QMainWindow pour nous permettre de gérer tout cela.
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

L'objet QMainWindow

La structure d'une fenêtre QMainWindow se compose comme ceci :

Structure de QMainWindow


La barre de menu



La barre de menu en haut de la fenêtre sous Windows et Linux et détachée sous Mac OS.
Les barres de menus sont de type QMenuBar

Les barres d'outils



Les barres d'outils qui peuvent être en haut, à gauche, à droite ou en bas et déplaçable par l'utilisateur.
Les barres d'outils sont de type QToolbar

Le dock



Les objets docks sont les objets comme les palettes de couleurs ou les outils dans des logiciels tels que Photoshop ou Flash.

Ces objets sont de type QDockWidget

Le Widget central



Le Widget central est le contenu proprement dit de notre application.
Ca peut être un widget ou un layout.

La barre de Status



Cette barre permet d'afficher un message décrivant le status du programme, la progression d'une action ...
La barre d'outil est un objet de type QStatusBar

Une première fenêtre d'application

Pour commencer, on va créer notre fenêtre :

JEditor version GTK


Pour ce code vous aurez besoin du pack d'image.

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
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
/*
 * JEditorDialog.java
 * Version de JEditor sans les signaux 
 *
 * Created on 2 novembre 2007
 * Modified on 17 novembre 2007
 */
 
/* Import des classes espace de nomage nécessaires */
import com.trolltech.qt.QVariant;
 
/* Importation des éléments du GUI */
import com.trolltech.qt.gui.QApplication;
import com.trolltech.qt.gui.QMainWindow;
import com.trolltech.qt.gui.QTextEdit;
import com.trolltech.qt.gui.QMenu;
import com.trolltech.qt.gui.QToolBar;
import com.trolltech.qt.gui.QAction;
import com.trolltech.qt.gui.QMenuBar;
import com.trolltech.qt.gui.QFileDialog;
import com.trolltech.qt.gui.QCloseEvent;
import com.trolltech.qt.gui.QMessageBox;
import com.trolltech.qt.gui.QIcon;
import com.trolltech.qt.gui.QKeySequence;
import com.trolltech.qt.gui.QCursor;
 
/* Définition de l'application et de ses attributs */
public class JEditorDialog extends QMainWindow {
    private String curFile;         // Fichier actuellement ouvert
    private QTextEdit textEdit;     // Widget permettant l'affichage et la modification du texte
    private QMenu fileMenu;         // Menu Fichier
    private QMenu editMenu;         // Menu Edition
    private QMenu helpMenu;         // Menu Aide
    private QToolBar fileToolBar;   // Barre d'outil Fichier
    private QToolBar editToolBar;   // Barre d'outil Edition
    private QAction newAct;         // Action Nouveau
    private QAction openAct;        // Action Ouvrir
    private QAction saveAct;        // Action Enregistrer
    private QAction saveAsAct;      // Action Enregistrer Sous
    private QAction exitAct;        // Action Quitter
    private QAction cutAct;         // Action Couper
    private QAction copyAct;        // Action Copier
    private QAction pasteAct;       // Action Coller
    private QAction aboutAct;       // Action A Propos de JEditor
    private QAction aboutQtAct;     // Action A propos de Qt Jambi
    private String rsrcPath = "classpath:images"; // Répertoire des images
    
    /* Définition du constructeur */
    public JEditorDialog()
    {
        QMenuBar menuBar = new QMenuBar();                // On crée la barre de menu
        textEdit = new QTextEdit(this);
        setMenuBar(menuBar);                              // On ajoute la barre de menu à notre Application
        setCentralWidget(textEdit);                       // On ajoute la zone de Texte
        /* On lance les méthodes de création des différents attributs de notre fenêtre */
        createActions();
        createMenus();
        createToolBars();
        createStatusBar();
        setUnifiedTitleAndToolBarOnMac(true);
      }
      
      /* Création des actions des menus et des toolbars */
      private void createActions()
      {
          /* Actions du menu Fichier */
          newAct = new QAction(new QIcon(rsrcPath + "/new.png"), tr("&Nouveau"), this);
          newAct.setShortcut(new QKeySequence(tr("Ctrl+N")));
          newAct.setStatusTip(tr("Nouveau fichier"));
 
          openAct = new QAction(new QIcon(rsrcPath + "/open.png"), tr("&Ouvrir..."), this);
          openAct.setShortcut(tr("Ctrl+O"));
          openAct.setStatusTip(tr("Ouvrir un fichier"));
 
          saveAct = new QAction(new QIcon(rsrcPath + "/save.png"), tr("&Enregistrer..."), this);
          saveAct.setShortcut(tr("Ctrl+S"));
          saveAct.setStatusTip(tr("Enregistrer le fichier"));
 
          saveAsAct = new QAction(new QIcon(rsrcPath + "/save_as.png"), tr("Enregistrer Sous..."), this);
          saveAsAct.setStatusTip(tr("Enregistrer le fichier sous ..."));
 
          exitAct = new QAction(tr("Quitter"), this);
          exitAct.setStatusTip(tr("Quitter l'application"));
 
          /* Actions du Menu Edition */
          cutAct = new QAction(new QIcon(rsrcPath + "/cut.png"), tr("Cou&per"), this);
          cutAct.setShortcut(new QKeySequence(tr("Ctrl+X")));
          cutAct.setStatusTip(tr("Couper la séléction"));
 
          copyAct = new QAction(new QIcon(rsrcPath + "/copy.png"), tr("&Copier..."), this);
          copyAct.setShortcut(tr("Ctrl+C"));
          copyAct.setStatusTip(tr("Copier la séléction"));
 
          pasteAct = new QAction(new QIcon(rsrcPath + "/paste.png"), tr("Co&ller..."), this);
          pasteAct.setShortcut(tr("Ctrl+V"));
          pasteAct.setStatusTip(tr("Coller le texte précédement couper ou copier"));
          
          /* Action du menu Aide */
          aboutAct = new QAction(new QIcon(rsrcPath + "/about.png"), tr("A Propos de &JEditor"), this);
          aboutAct.setStatusTip(tr("A Propos de JEditor"));
          
          aboutQtAct = new QAction(new QIcon(rsrcPath + "/qt.png"), tr("A Propos de &Qt"), this);
          aboutQtAct.setStatusTip(tr("Show the Qt library's About box"));
          
          cutAct.setEnabled(false);
          copyAct.setEnabled(false);
      }
      
      /* Création des Menus */
      private void createMenus()
      {
          /* Menu fichier */
          fileMenu = menuBar().addMenu(tr("&Fichier"));
          fileMenu.addAction(newAct);
          fileMenu.addAction(openAct);
          fileMenu.addAction(saveAct);
          fileMenu.addAction(saveAsAct);
          fileMenu.addSeparator();
          fileMenu.addAction(exitAct);
 
          /* Menu Edition */
          editMenu = menuBar().addMenu(tr("&Edition"));
          editMenu.addAction(cutAct);
          editMenu.addAction(copyAct);
          editMenu.addAction(pasteAct);
 
          menuBar().addSeparator();
 
          /* Menu Aide */
          helpMenu = menuBar().addMenu(tr("&Aide"));
          helpMenu.addAction(aboutAct);
          helpMenu.addAction(aboutQtAct);
      }
      
      /* Création de la barre de menu */
      private void createToolBars()
      {
          fileToolBar = addToolBar(tr("Fichier"));
          fileToolBar.addAction(newAct);
          fileToolBar.addAction(openAct);
          fileToolBar.addAction(saveAct);
 
          editToolBar = addToolBar(tr("Edition"));
          editToolBar.addAction(cutAct);
          editToolBar.addAction(copyAct);
          editToolBar.addAction(pasteAct);
      }
      
      /* Création de la Barre de Status */
      private void createStatusBar()
      {
          statusBar().showMessage(tr("Pret"));
      }
      
      /* Lancement de l'application */
      public static void main(String[] args) {
            QApplication.initialize(args);
 
            JEditorDialog application = new JEditorDialog();
            application.show();
 
            QApplication.exec();
        }
}


Il n'y a rien de vraiment compliqué.
En lançant l'application, vous pourrez essayer de déplacer les boites de dialogue.
Il existe une fonction spéciale permettant de transformer la barre d'outils sous Mac OS X.

Code : Java
1
setUnifiedTitleAndToolBarOnMac(true);


ToolBar sur Mac OS

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