IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Viadeo Twitter Facebook Share on Google+   
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

Fenêtre principale de l'application

Aperçu des classes de la fenêtre principale

Ces classes fournissent tout ce dont vous avez besoin pour une fenêtre principale d'application moderne typique, comme la fenêtre principale elle-même, les menus et barre d'outils, une barre d'état, etc.

QAction Abstraction des actions de l'interface utilisateur pouvant être appliquée sur les widgets.
QActionGroup Groupe d'actions.
QDockWidget Widget qui peut être encastré dans une QMainWindow ou placé sur le bureau sous forme de fenêtre flottante.
QMainWindow Fenêtre principale de l'application.
QMdiArea Zone dans laquelle les fenêtres MDI sont affichées.
QMdiSubWindow Sous-fenêtre pour les QMdiArea.
QMenu Widget de menu utilisé dans les barres de menus, les menus contextuels et les autres menus pop-up.
QMenuBar Barre de menu horizontale.
QSizeGrip Poignée de redimensionnement pour le redimensionnement des fenêtres.
QStatusBar Barre horizontale convenant à l'affichage des informations d'état.
QToolBar Panneau mobile contenant un ensemble de contrôles.
QWidgetAction Étend QAction avec une interface pour insérer des widgets personnalisés dans des conteneurs basés sur les actions, tels que les barres d'outils.

Les classes de la fenêtre principale

Qt 4 fournit les classes suivantes pour la gestion des fenêtres principales et des composants utilisateur associés :

  • QMainWindow reste la classe centrale autour de laquelle l'application peut être construite. L'interface de cette classe a été simplifiée et la plupart des fonctionnalités inclues précédemment sont maintenant intégrées dans les classes QDockWidget et QToolBar ;
  • QDockWidget fournit un widget qui peut être utilisé pour créer des palettes d'outils et des fenêtres d'aide détachables. Les widgets de type dock gardent une trace de leurs propriétés et peuvent être déplacés, fermés et rendus flottants sous forme de fenêtres externes ;
  • QToolBar fournit une barre d'outils générique qui peut contenir de nombreux widgets actionnables différents, tels que des boutons, des menus, des combobox et des spinbox. Le modèle d'actions unifié de Qt 4 permet une bonne coopération entre les boites d'outils, les menus et les raccourcis clavier.

Code d'exemple

L'utilisation de QMainWindow est très simple. Généralement, nous héritons de QMainWindow et définissons des menus, barres d'outils et widgets de type dock dans le constructeur de QMainWindow.

Pour ajouter une barre de menu à la fenêtre principale, nous créons simplement les menus et les ajoutons à la barre de menu de la fenêtre principale. Notez que la fonction QMainWindow::menuBar() créera automatiquement la barre de menu lors du premier appel. Vous pouvez aussi appeler QMainWindow::setMenuBar() pour utiliser une barre de menu personnalisée dans la fenêtre principale.

 MainWindow::MainWindow(QWidget *parent)
 
     : QMainWindow(parent)
 
 {
 
     ...
 
     newAct = new QAction(tr("&Nouveau"), this);
 
     newAct->setShortcuts(QKeySequence::New);
 
     newAct->setStatusTip(tr("Créer un nouveau fichier"));
 
     connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));
 
 
 
     openAct = new QAction(tr("&Ouvrir..."), this);
 
     openAct->setShortcuts(QKeySequence::Open);
 
     openAct->setStatusTip(tr("Ouvrir un fichier existant"));
 
     connect(openAct, SIGNAL(triggered()), this, SLOT(open()));
 
     ...

Une fois les actions créées, nous pouvons les ajouter aux composants de la fenêtre principale. Pour commencer, nous les ajoutons au menu pop-up:

     fileMenu = menuBar()->addMenu(tr("&Fichier"));
 
     fileMenu->addAction(newAct);
 
     fileMenu->addAction(openAct);
 
     ...
 
     fileMenu->addSeparator();
 
     ...

Les classes QToolBar et QMenu utilisent le système d'action de Qt pour fournir une API cohérente. Dans le code ci-dessus, quelques actions existantes sont ajoutées au menu fichier avec la fonction QMenu::addAction(). La QToolBar fournit aussi cette fonction, facilitant la réutilisation des actions dans différentes parties de la fenêtre principale. Cela permet d'éviter la duplication inutile du travail.

Nous créons une barre d'outils comme enfant de la fenêtre principale et nous lui ajoutons les actions désirées :

     fileToolBar = addToolBar(tr("Fichier"));
 
     fileToolBar->addAction(newAct);
 
     fileToolBar->addAction(openAct);
 
     ...
 
 fileToolbar->setAllowedAreas(Qt::TopToolBarArea | Qt::BottomToolBarArea);
 
 addToolBar(Qt::TopToolBarArea, fileToolbar);

Dans cet exemple, la barre d'outils est restreinte aux parties supérieures et inférieures de la fenêtre principale et est initialement placée en haut de la fenêtre. Nous pouvons voir que les actions spécifiées par newAct et openAct seront affichées à la fois dans la barre d'outils et dans le menu fichier.

La classe QDockWidget s'utilise d'une façon similaire à QToolBar. Nous créons un widget de type dock comme enfant de la fenêtre principale et ajoutons des widgets en tant qu'enfants du widget dock :

     contentsWindow = new QDockWidget(tr("Table des matières"), this);
 
     contentsWindow->setAllowedAreas(Qt::LeftDockWidgetArea
 
                                   | Qt::RightDockWidgetArea);
 
     addDockWidget(Qt::LeftDockWidgetArea, contentsWindow);
 
 
 
     headingList = new QListWidget(contentsWindow);
 
     contentsWindow->setWidget(headingList);

Dans cet exemple, le widget de type dock peut être seulement placé sur la gauche ou la droite de la fenêtre. Initialement, il est placé sur la gauche.

La classe QMainWindow permet au programmeur de choisir quelles zones de widgets dock occuperont chacun des quatre coins de la fenêtre. Si nécessaire, la valeur par défaut peut être modifiée avec la fonction QMainWindow::setCorner() :

 setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea);
 
 setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
 
 setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea);
 
 setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);

Le diagramme suivant présente la configuration définie par le code ci-dessus. Notez que les widgets dock occupent les coins haut et bas de la fenêtre principale pour ce layout.

image

Une fois que tous les composants de la fenêtre principale ont été définis, le widget central est créé puis inséré en utilisant le code suivant:

 QWidget *centralWidget = new QWidget(this);
 
 setCentralWidget(centralWidget);

Le widget central peut être une instance de toute classe dérivée de QWidget.

Remerciements

Merci à Alexandre Laurent pour la traduction, ainsi qu'à Ilya Diallo, Ali-K?mal Aydin et Claude Leloup pour la relecture !

Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt 4.7
Copyright © 2021 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur, une redirection cassée ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !