Sur cette page

Fenêtre principale de l'application

Présentation des classes de la fenêtre principale

Ces classes fournissent tout ce dont vous avez besoin pour créer une fenêtre principale d’application moderne typique, notamment la fenêtre principale elle-même, les barres de menus et d’outils, ainsi qu’une barre d’état.

QDockWidget

Widget pouvant être ancré dans une QMainWindow ou affiché en tant que fenêtre de premier plan sur le bureau

QMainWindow

Fenêtre principale de l'application

QMdiArea

Zone dans laquelle s’affichent les fenêtres MDI

QMdiSubWindow

Classe de sous-fenêtre pour QMdiArea

QMenu

Widget de menu destiné aux barres de menus, aux menus contextuels et autres menus contextuels

QMenuBar

Barre de menus horizontale

QSizeGrip

Poignée de redimensionnement pour redimensionner les fenêtres de niveau supérieur

QStatusBar

Barre horizontale adaptée à l'affichage d'informations d'état

QToolBar

Panneau mobile contenant un ensemble de contrôles

QWidgetAction

Étend la classe QAction par une interface permettant d’insérer des widgets personnalisés dans des conteneurs basés sur des actions, tels que les barres d’outils

Les classes de la fenêtre principale

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

  • QMainWindow est la classe centrale autour de laquelle les applications peuvent être construites. Avec les classes associées QDockWidget et QToolBar, elle représente l'interface utilisateur de niveau supérieur de l'application.
  • QDockWidget fournit un widget permettant de créer des palettes d’outils détachables ou des fenêtres d’aide. Les widgets d’ancrage gèrent leurs propres propriétés et peuvent être déplacés, fermés ou affichés en tant que fenêtres flottantes.
  • QToolBar fournit un widget de barre d’outils générique pouvant contenir divers widgets liés à des actions, tels que des boutons, des menus déroulants, des listes déroulantes et des champs de sélection. L’importance accordée à un modèle d’action unifié dans Qt signifie que les barres d’outils s’intègrent parfaitement aux menus et aux raccourcis clavier.

Exemple de code

L'utilisation de ` QMainWindow ` est simple. En général, vous créez une sous-classe de ` QMainWindow ` et configurez les menus, les barres d'outils et les widgets ancrables à l'intérieur du constructeur ` QMainWindow `.

Pour ajouter une barre de menus à la fenêtre principale, créez les menus, puis ajoutez-les à la barre de menus de la fenêtre principale. Notez que la fonction ` QMainWindow::menuBar()` créera automatiquement la barre de menus lors de son premier appel. Vous pouvez également appeler ` QMainWindow::setMenuBar()` pour utiliser une barre de menus personnalisée dans la fenêtre principale.

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    ...
    newAct = new QAction(QIcon::fromTheme(QIcon::ThemeIcon::DocumentNew),
                         tr("&New"), this);
    newAct->setShortcuts(QKeySequence::New);
    newAct->setStatusTip(tr("Create a new file"));
    connect(newAct, &QAction::triggered, this, &MainWindow::newFile);

    openAct = new QAction(QIcon::fromTheme(QIcon::ThemeIcon::DocumentOpen),
                          tr("&Open..."), this);
    openAct->setShortcuts(QKeySequence::Open);
    openAct->setStatusTip(tr("Open an existing file"));
    connect(openAct, &QAction::triggered, this, &MainWindow::open);
    ...

Une fois les actions créées, vous pouvez les ajouter aux composants de la fenêtre principale. Pour commencer, ajoutez-les aux menus contextuels :

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

Les classes ` QToolBar ` et ` QMenu ` utilisent le système d’actions de Qt pour fournir une API cohérente. Dans le code ci-dessus, certaines actions existantes ont été ajoutées au menu Fichier à l’aide de la fonction `QMenu::addAction()`. La classe ` QToolBar ` fournit également cette fonction, ce qui facilite la réutilisation des actions dans différentes parties de la fenêtre principale. Cela évite toute duplication inutile du travail.

Créez une barre d’outils en tant qu’enfant de la fenêtre principale, puis ajoutez-y les actions souhaitées :

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

Dans cet exemple, la barre d’outils est limitée aux zones supérieure et inférieure de la fenêtre principale, et est initialement placée dans la zone supérieure. On constate que les actions spécifiées par newAct et openAct s’affichent à la fois dans la barre d’outils et dans le menu Fichier.

QDockWidget est utilisé de manière similaire à QToolBar. Vous créez un widget « dock » en tant qu’enfant de la fenêtre principale, puis vous y ajoutez des widgets en tant qu’enfants de ce widget « dock » :

contentsWindow = new QDockWidget(tr("Table of Contents"), this);
contentsWindow->setAllowedAreas(Qt::LeftDockWidgetArea
                              | Qt::RightDockWidgetArea);
addDockWidget(Qt::LeftDockWidgetArea, contentsWindow);

headingList = new QListWidget(contentsWindow);
contentsWindow->setWidget(headingList);

Dans cet exemple, le widget de dock ne peut être placé que dans les zones de dock gauche et droite, et il est initialement placé dans la zone de dock gauche.

L’API ` QMainWindow ` vous permet de personnaliser les zones du widget d’ancrage qui occupent les quatre coins de la zone d’ancrage. Si nécessaire, la valeur par défaut peut être modifiée à l’aide de 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 schéma suivant illustre la configuration générée par le code ci-dessus. Notez que, dans cette disposition, les widgets d’ancrage gauche et droit occuperont respectivement les coins supérieur et inférieur de la fenêtre principale.

Positionnement des fenêtres du dock par rapport à un widget central

Une fois tous les composants de la fenêtre principale configurés, le widget central est créé et installé à l’aide d’un code similaire à celui-ci :

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

Le widget central peut être n’importe quelle sous-classe de ` QWidget`.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.