Sur cette page

Fenêtre principale de l'application

Vue d'ensemble des classes de la fenêtre principale

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

QDockWidget

Widget pouvant être ancré à l'intérieur d'une QMainWindow ou flottant en tant que fenêtre de premier niveau sur le bureau.

QMainWindow

Fenêtre principale de l'application

QMdiArea

Zone dans laquelle les fenêtres MDI sont affichées

QMdiSubWindow

Classe de sous-fenêtre pour QMdiArea

QMenu

Widget de menu à utiliser dans les barres de menu, les menus contextuels et autres menus contextuels

QMenuBar

Barre de menu horizontale

QSizeGrip

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

QStatusBar

Barre horizontale permettant de présenter des informations d'état

QToolBar

Panneau mobile contenant un ensemble de contrôles

QWidgetAction

Extension de QAction par une interface permettant d'insérer des widgets personnalisés dans des conteneurs basés sur l'action, tels que les barres d'outils.

Les classes de la fenêtre principale

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

  • QMainWindow est la classe centrale autour de laquelle les applications peuvent être construites. Avec les classes QDockWidget et QToolBar, elle représente l'interface utilisateur de premier niveau de l'application.
  • QDockWidget fournit un widget qui peut être utilisé pour créer des palettes d'outils détachables ou des fenêtres d'aide. Les widgets de dock gardent la trace de leurs propres propriétés et peuvent être déplacés, fermés et flottés comme des fenêtres externes.
  • QToolBar fournit une barre d'outils générique qui peut contenir un certain nombre de widgets liés à l'action, tels que des boutons, des menus déroulants, des boîtes combinées et des boîtes tournantes. L'accent mis sur un modèle d'action unifié dans Qt signifie que les barres d'outils coopèrent bien avec les menus et les raccourcis clavier.

Exemple de code

L'utilisation de QMainWindow est simple. En général, vous sous-classez QMainWindow et vous configurez les menus, les barres d'outils et les widgets d'ancrage dans le constructeur de QMainWindow.

Pour ajouter une barre de menus à la fenêtre principale, créez les menus et ajoutez-les à la barre de menus de la fenêtre principale. Notez que la fonction QMainWindow::menuBar() crée 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'action de Qt pour fournir une API cohérente. Dans le code ci-dessus, certaines actions existantes ont été ajoutées au menu Fichier avec la fonction QMenu::addAction(). QToolBar fournit également cette fonction, ce qui facilite la réutilisation des actions dans différentes parties de la fenêtre principale. Cela permet d'éviter une duplication inutile du travail.

Créez une barre d'outils en tant qu'enfant de la fenêtre principale et 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 de la barre d'outils supérieure et inférieure de la fenêtre principale et est initialement placée dans la zone de la barre d'outils supérieure. 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 des fichiers.

QDockWidget Le widget dock est utilisé de la même manière que QToolBar. Vous créez un widget dock en tant qu'enfant de la fenêtre principale et vous ajoutez des widgets en tant qu'enfants du 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 d'ancrage ne peut être placé que dans les zones d'ancrage gauche et droite, et il est initialement placé dans la zone d'ancrage gauche.

L'API QMainWindow vous permet de personnaliser les zones de widgets d'ancrage qui occupent les quatre coins de la zone de widgets 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 diagramme suivant montre la configuration produite par le code ci-dessus. Notez que les widgets d'ancrage gauche et droit occuperont les coins supérieur et inférieur de la fenêtre principale dans cette disposition.

Placement des fenêtres dock par rapport à un widget central

Une fois que tous les composants de la fenêtre principale ont été configurés, le widget central est créé et installé à l'aide d'un code similaire au suivant :

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.