Sur cette page

QMainWindow Class

La classe QMainWindow fournit une fenêtre d'application principale. Plus d'informations...

En-tête : #include <QMainWindow>
CMake : find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake : QT += widgets
Héritages : QWidget

Types publics

enum DockOption { AnimatedDocks, AllowNestedDocks, AllowTabbedDocks, ForceTabbedDocks, VerticalTabs, GroupedDragging }
flags DockOptions

Propriétés

Fonctions publiques

QMainWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
virtual ~QMainWindow()
void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget)
void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget, Qt::Orientation orientation)
void addToolBar(Qt::ToolBarArea area, QToolBar *toolbar)
void addToolBar(QToolBar *toolbar)
QToolBar *addToolBar(const QString &title)
void addToolBarBreak(Qt::ToolBarArea area = Qt::TopToolBarArea)
QWidget *centralWidget() const
Qt::DockWidgetArea corner(Qt::Corner corner) const
virtual QMenu *createPopupMenu()
QMainWindow::DockOptions dockOptions() const
Qt::DockWidgetArea dockWidgetArea(QDockWidget *dockwidget) const
bool documentMode() const
QSize iconSize() const
void insertToolBar(QToolBar *before, QToolBar *toolbar)
void insertToolBarBreak(QToolBar *before)
bool isAnimated() const
bool isDockNestingEnabled() const
QMenuBar *menuBar() const
QWidget *menuWidget() const
void removeDockWidget(QDockWidget *dockwidget)
void removeToolBar(QToolBar *toolbar)
void removeToolBarBreak(QToolBar *before)
void resizeDocks(const QList<QDockWidget *> &docks, const QList<int> &sizes, Qt::Orientation orientation)
bool restoreDockWidget(QDockWidget *dockwidget)
bool restoreState(const QByteArray &state, int version = 0)
QByteArray saveState(int version = 0) const
void setCentralWidget(QWidget *widget)
void setCorner(Qt::Corner corner, Qt::DockWidgetArea area)
void setDockOptions(QMainWindow::DockOptions options)
void setDocumentMode(bool enabled)
void setIconSize(const QSize &iconSize)
void setMenuBar(QMenuBar *menuBar)
void setMenuWidget(QWidget *menuBar)
void setStatusBar(QStatusBar *statusbar)
void setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition)
void setTabShape(QTabWidget::TabShape tabShape)
void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle)
void splitDockWidget(QDockWidget *first, QDockWidget *second, Qt::Orientation orientation)
QStatusBar *statusBar() const
QTabWidget::TabPosition tabPosition(Qt::DockWidgetArea area) const
QTabWidget::TabShape tabShape() const
QList<QDockWidget *> tabifiedDockWidgets(QDockWidget *dockwidget) const
void tabifyDockWidget(QDockWidget *first, QDockWidget *second)
QWidget *takeCentralWidget()
Qt::ToolBarArea toolBarArea(const QToolBar *toolbar) const
bool toolBarBreak(QToolBar *toolbar) const
Qt::ToolButtonStyle toolButtonStyle() const
bool unifiedTitleAndToolBarOnMac() const

Emplacements publics

void setAnimated(bool enabled)
void setDockNestingEnabled(bool enabled)
void setUnifiedTitleAndToolBarOnMac(bool set)

Signaux

void iconSizeChanged(const QSize &iconSize)
void tabifiedDockWidgetActivated(QDockWidget *dockWidget)
void toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle)

Fonctions protégées réimplémentées

virtual void contextMenuEvent(QContextMenuEvent *event) override
virtual bool event(QEvent *event) override

Description détaillée

Cadre de la fenêtre principale Qt

Une fenêtre principale fournit un cadre pour la construction de l'interface utilisateur d'une application. Qt dispose de QMainWindow et de ses classes apparentées pour la gestion de la fenêtre principale. QMainWindow possède sa propre présentation à laquelle vous pouvez ajouter QToolBars, QDockWidgets, QMenuBar, et QStatusBar. La présentation possède une zone centrale qui peut être occupée par n'importe quel type de widget. Vous pouvez voir une image de la disposition ci-dessous.

Schéma de la fenêtre principale et de la position de ses composants

Création des composants de la fenêtre principale

Le widget central est généralement un widget Qt Widgets standard, tel que QTextEdit ou QGraphicsView. Des widgets personnalisés peuvent également être utilisés pour les applications avancées. Vous définissez le widget central à l'aide de setCentralWidget().

Les fenêtres principales ont une interface à document unique (SDI) ou multiple (MDI). Vous créez des applications MDI dans Qt Widgets en utilisant un QMdiArea comme widget central.

Nous allons maintenant examiner chacun des autres widgets qui peuvent être ajoutés à une fenêtre principale. Nous donnons des exemples sur la façon de les créer et de les ajouter.

Création de menus

Qt implémente les menus dans QMenu et QMainWindow les conserve dans QMenuBar. QActions sont ajoutés aux menus, qui les affichent en tant qu'éléments de menu.

Vous pouvez ajouter de nouveaux menus à la barre de menus de la fenêtre principale en appelant menuBar(), qui renvoie le site QMenuBar pour la fenêtre, puis en ajoutant un menu à l'aide de QMenuBar::addMenu().

QMainWindow est livré avec une barre de menu par défaut, mais vous pouvez également en définir une vous-même avec setMenuBar(). Si vous souhaitez mettre en œuvre une barre de menu personnalisée (c'est-à-dire ne pas utiliser le widget QMenuBar ), vous pouvez la définir avec setMenuWidget().

Voici un exemple de création de menus :

    void MainWindow::createMenus()
    {
        fileMenu = menuBar()->addMenu(tr("&File"));
        fileMenu->addAction(newAct);
        fileMenu->addAction(openAct);
        fileMenu->addAction(saveAct);

La fonction createPopupMenu() crée des menus contextuels lorsque la fenêtre principale reçoit des événements de menu contextuel. L'implémentation par défaut génère un menu avec les actions vérifiables des widgets du dock et des barres d'outils. Vous pouvez réimplémenter createPopupMenu() pour créer un menu personnalisé.

Création de barres d'outils

Les barres d'outils sont implémentées dans la classe QToolBar. Vous ajoutez une barre d'outils à une fenêtre principale à l'aide de la classe addToolBar().

Vous contrôlez la position initiale des barres d'outils en les assignant à un Qt::ToolBarArea spécifique. Vous pouvez diviser une zone en insérant une barre d'outils - comme un saut de ligne dans l'édition de texte - avec addToolBarBreak() ou insertToolBarBreak(). Vous pouvez également limiter le placement par l'utilisateur avec QToolBar::setAllowedAreas() et QToolBar::setMovable().

La taille des icônes de la barre d'outils peut être récupérée à l'aide de iconSize(). Les tailles dépendent de la plate-forme ; vous pouvez définir une taille fixe avec setIconSize(). Vous pouvez modifier l'apparence de tous les boutons d'outils dans les barres d'outils avec setToolButtonStyle().

Voici un exemple de création de barre d'outils :

    void MainWindow::createToolBars()
    {
        fileToolBar = addToolBar(tr("File"));
        fileToolBar->addAction(newAct);

Création de widgets de dock

Les widgets d'ancrage sont implémentés dans la classe QDockWidget. Un widget d'ancrage est une fenêtre qui peut être ancrée dans la fenêtre principale. Vous ajoutez des widgets d'ancrage à une fenêtre principale à l'aide de la classe addDockWidget().

Il existe quatre zones de widgets d'ancrage, telles que définies par l'énumération Qt::DockWidgetArea: gauche, droite, haut et bas. Vous pouvez spécifier quelle zone de widget d'ancrage doit occuper les coins où les zones se chevauchent à l'aide de setCorner(). Par défaut, chaque zone ne peut contenir qu'une seule rangée (verticale ou horizontale) de widgets d'ancrage, mais si vous activez l'imbrication avec setDockNestingEnabled(), des widgets d'ancrage peuvent être ajoutés dans les deux sens.

Deux widgets peuvent également être empilés l'un sur l'autre. Une adresse QTabBar est alors utilisée pour sélectionner lequel des widgets doit être affiché.

Nous donnons un exemple de création et d'ajout de widgets dock à une fenêtre principale :

QDockWidget *dockWidget = new QDockWidget(tr("Dock Widget"), this);
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea |
                            Qt::RightDockWidgetArea);
dockWidget->setWidget(dockWidgetContents);
addDockWidget(Qt::LeftDockWidgetArea, dockWidget);

La barre d'état

Vous pouvez définir une barre d'état à l'aide de setStatusBar(), mais une barre d'état est créée lors du premier appel à statusBar() (qui renvoie la barre d'état de la fenêtre principale). Voir QStatusBar pour savoir comment l'utiliser.

Stockage de l'état

QMainWindow peut stocker l'état de sa disposition avec saveState(); il peut ensuite être récupéré avec restoreState(). C'est la position et la taille (par rapport à la taille de la fenêtre principale) des barres d'outils et des widgets du dock qui sont stockées.

Voir aussi QMenuBar, QToolBar, QStatusBar, QDockWidget, et Exemple de menus.

Documentation sur les types de membres

enum QMainWindow::DockOption
flags QMainWindow::DockOptions

Cette énumération contient des drapeaux qui spécifient le comportement d'ancrage de QMainWindow.

ConstanteValeurDescription
QMainWindow::AnimatedDocks0x01Identique à la propriété animated.
QMainWindow::AllowNestedDocks0x02Identique à la propriété dockNestingEnabled.
QMainWindow::AllowTabbedDocks0x04L'utilisateur peut placer un widget dock "au-dessus" d'un autre. Les deux widgets sont empilés et une barre d'onglets apparaît pour sélectionner celui qui est visible.
QMainWindow::ForceTabbedDocks0x08Chaque zone d'ancrage contient une seule pile de widgets d'ancrage à onglets. En d'autres termes, les widgets ne peuvent pas être placés l'un à côté de l'autre dans une zone d'ancrage. Si cette option est activée, AllowNestedDocks n'a aucun effet.
QMainWindow::VerticalTabs0x10Les deux zones d'ancrage verticales situées sur les côtés de la fenêtre principale affichent leurs onglets verticalement. Si cette option n'est pas activée, toutes les zones d'ancrage affichent leurs onglets en bas. Implique AllowTabbedDocks. Voir également setTabPosition().
QMainWindow::GroupedDragging0x20Lorsque l'on fait glisser la barre de titre d'une zone d'ancrage, tous les onglets qui lui sont associés sont également déplacés. Implique AllowTabbedDocks. Ne fonctionne pas bien si certains QDockWidgets ont des restrictions dans la zone où ils sont autorisés. (Cette valeur d'énumération a été ajoutée dans Qt 5.6.)

Ces options contrôlent uniquement la manière dont les widgets de dock peuvent être déposés dans une page QMainWindow. Elles ne réorganisent pas les widgets de dock pour se conformer aux options spécifiées. C'est pourquoi elles doivent être définies avant l'ajout de tout widget de dock à la fenêtre principale. Les exceptions sont les options AnimatedDocks et VerticalTabs, qui peuvent être définies à tout moment.

Le type DockOptions est un typedef pour QFlags<DockOption>. Il stocke une combinaison OU de valeurs DockOption.

Documentation sur les propriétés

animated : bool

Cette propriété indique si la manipulation des widgets d'ancrage et des barres d'outils est animée

Lorsqu'un widget d'ancrage ou une barre d'outils est déplacé sur la fenêtre principale, celle-ci ajuste son contenu pour indiquer l'endroit où le widget d'ancrage ou la barre d'outils sera ancré s'il est déposé. La définition de cette propriété permet à QMainWindow de déplacer son contenu dans une animation fluide. Si vous effacez cette propriété, le contenu s'enclenche dans sa nouvelle position.

Cette propriété est définie par défaut. Elle peut être effacée si la fenêtre principale contient des widgets qui sont lents à se redimensionner ou à se repeindre.

La définition de cette propriété est identique à la définition de l'option AnimatedDocks à l'aide de setDockOptions().

Fonctions d'accès :

bool isAnimated() const
void setAnimated(bool enabled)

dockNestingEnabled : bool

Cette propriété indique si les quais peuvent être imbriqués

Si cette propriété vaut false, les zones de dock ne peuvent contenir qu'une seule rangée (horizontale ou verticale) de widgets de dock. Si cette propriété vaut true, la zone occupée par un widget de dock peut être divisée dans les deux sens pour contenir plus de widgets de dock.

L'imbrication de dock n'est nécessaire que dans les applications qui contiennent beaucoup de widgets de dock. Elle offre à l'utilisateur une plus grande liberté dans l'organisation de sa fenêtre principale. Cependant, l'imbrication de dock entraîne un comportement plus complexe (et moins intuitif) lorsqu'un widget de dock est glissé sur la fenêtre principale, puisqu'il y a plus de façons de placer un widget de dock déposé dans la zone de dock.

La définition de cette propriété est identique à la définition de l'option AllowNestedDocks à l'aide de setDockOptions().

Fonctions d'accès :

bool isDockNestingEnabled() const
void setDockNestingEnabled(bool enabled)

dockOptions : DockOptions

Cette propriété définit le comportement d'ancrage de QMainWindow

La valeur par défaut est AnimatedDocks | AllowTabbedDocks.

Fonctions d'accès :

QMainWindow::DockOptions dockOptions() const
void setDockOptions(QMainWindow::DockOptions options)

documentMode : bool

Cette propriété indique si la barre d'onglets des dockwidgets à onglets est définie en mode document.

La valeur par défaut est false.

Fonctions d'accès :

bool documentMode() const
void setDocumentMode(bool enabled)

Voir également QTabBar::documentMode.

iconSize : QSize

taille des icônes de la barre d'outils dans cette fenêtre principale.

La valeur par défaut est la taille des icônes de la barre d'outils par défaut du style d'interface graphique. Notez que les icônes utilisées doivent être au moins de cette taille, car les icônes sont seulement réduites.

Fonctions d'accès :

QSize iconSize() const
void setIconSize(const QSize &iconSize)

tabShape : QTabWidget::TabShape

Cette propriété définit la forme de l'onglet utilisé pour les widgets de dock à onglets.

La valeur par défaut est QTabWidget::Rounded.

Fonctions d'accès :

QTabWidget::TabShape tabShape() const
void setTabShape(QTabWidget::TabShape tabShape)

Voir également setTabPosition().

toolButtonStyle : Qt::ToolButtonStyle

le style des boutons de la barre d'outils dans cette fenêtre principale.

Pour que le style des boutons d'outils suive les paramètres du système, définissez cette propriété sur Qt::ToolButtonFollowStyle. Sous Unix, les paramètres utilisateur de l'environnement de bureau seront utilisés. Sur les autres plates-formes, Qt::ToolButtonFollowStyle signifie icône uniquement.

La valeur par défaut est Qt::ToolButtonIconOnly.

Fonctions d'accès :

Qt::ToolButtonStyle toolButtonStyle() const
void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle)

unifiedTitleAndToolBarOnMac : bool

Cette propriété indique si la fenêtre utilise l'aspect unifié du titre et de la barre d'outils sur macOS

Notez que l'implémentation de Qt 5 a plusieurs limitations par rapport à Qt 4 :

  • L'utilisation dans les fenêtres avec un contenu OpenGL n'est pas prise en charge. Ceci inclut QOpenGLWidget.
  • L'utilisation de barres d'outils ancrables ou mobiles peut entraîner des erreurs de peinture et n'est pas recommandée.

Fonctions d'accès :

bool unifiedTitleAndToolBarOnMac() const
void setUnifiedTitleAndToolBarOnMac(bool set)

Documentation des fonctions membres

[explicit] QMainWindow::QMainWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())

Construit une QMainWindow avec l'adresse parent donnée et le widget spécifié flags.

QMainWindow définit elle-même le drapeau Qt::Window et sera donc toujours créée en tant que widget de premier niveau.

[virtual noexcept] QMainWindow::~QMainWindow()

Détruit la fenêtre principale.

void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget)

Ajoute l'adresse dockwidget donnée à l'adresse area spécifiée.

void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget, Qt::Orientation orientation)

Ajoute dockwidget à area dans la direction spécifiée par orientation.

void QMainWindow::addToolBar(Qt::ToolBarArea area, QToolBar *toolbar)

Ajoute l'adresse toolbar à l'adresse area spécifiée dans cette fenêtre principale. Le site toolbar est placé à la fin du bloc de la barre d'outils actuelle (c'est-à-dire de la ligne). Si la fenêtre principale gère déjà toolbar, la barre d'outils ne sera déplacée que vers area.

Voir également insertToolBar(), addToolBarBreak() et insertToolBarBreak().

void QMainWindow::addToolBar(QToolBar *toolbar)

Équivalent à l'appel de addToolBar(Qt::TopToolBarArea, toolbar)

Il s'agit d'une fonction surchargée.

QToolBar *QMainWindow::addToolBar(const QString &title)

Crée un objet QToolBar, dont le titre de la fenêtre est title, et l'insère dans la zone supérieure de la barre d'outils.

Il s'agit d'une fonction surchargée.

Voir aussi setWindowTitle().

void QMainWindow::addToolBarBreak(Qt::ToolBarArea area = Qt::TopToolBarArea)

Ajoute une barre d'outils à l'adresse area après tous les autres objets présents.

QWidget *QMainWindow::centralWidget() const

Renvoie le widget central de la fenêtre principale. Cette fonction renvoie nullptr si le widget central n'a pas été défini.

Voir également setCentralWidget().

[override virtual protected] void QMainWindow::contextMenuEvent(QContextMenuEvent *event)

Réimplémente : QWidget::contextMenuEvent(QContextMenuEvent *event).

Qt::DockWidgetArea QMainWindow::corner(Qt::Corner corner) const

Renvoie la zone du widget dock qui occupe l'adresse corner spécifiée.

Voir également setCorner().

[virtual] QMenu *QMainWindow::createPopupMenu()

Renvoie un menu contextuel contenant des entrées à cocher pour les barres d'outils et les widgets d'ancrage présents dans la fenêtre principale. Si aucune barre d'outils ni aucun widget d'ancrage n'est présent, cette fonction renvoie nullptr.

Par défaut, cette fonction est appelée par la fenêtre principale lorsque l'utilisateur active un menu contextuel, généralement en cliquant avec le bouton droit de la souris sur une barre d'outils ou un widget d'ancrage.

Si vous souhaitez créer un menu contextuel personnalisé, réimplémentez cette fonction et renvoyez un menu contextuel nouvellement créé. La propriété du menu contextuel est transférée à l'appelant.

Voir aussi addDockWidget(), addToolBar() et menuBar().

Qt::DockWidgetArea QMainWindow::dockWidgetArea(QDockWidget *dockwidget) const

Renvoie le site Qt::DockWidgetArea pour dockwidget. Si dockwidget n'a pas été ajouté à la fenêtre principale, cette fonction renvoie Qt::NoDockWidgetArea.

Voir aussi addDockWidget(), splitDockWidget() et Qt::DockWidgetArea.

[override virtual protected] bool QMainWindow::event(QEvent *event)

Réimplémente : QWidget::event(QEvent *event).

[signal] void QMainWindow::iconSizeChanged(const QSize &iconSize)

Ce signal est émis lorsque la taille des icônes utilisées dans la fenêtre est modifiée. La nouvelle taille de l'icône est transmise à iconSize.

Vous pouvez connecter ce signal à d'autres composants pour aider à maintenir une apparence cohérente pour votre application.

Voir également setIconSize().

void QMainWindow::insertToolBar(QToolBar *before, QToolBar *toolbar)

Insère le site toolbar dans la zone occupée par la barre d'outils before de manière à ce qu'il apparaisse avant elle. Par exemple, dans une mise en page normale de gauche à droite, cela signifie que toolbar apparaîtra à gauche de la barre d'outils spécifiée par before dans une zone de barre d'outils horizontale.

Voir également insertToolBarBreak(), addToolBar() et addToolBarBreak().

void QMainWindow::insertToolBarBreak(QToolBar *before)

Insère une barre d'outils avant la barre d'outils spécifiée par before.

Renvoie la barre de menu de la fenêtre principale. Cette fonction crée et renvoie une barre de menu vide si la barre de menu n'existe pas.

Si vous souhaitez que toutes les fenêtres d'une application Mac partagent une barre de menu, n'utilisez pas cette fonction pour la créer, car la barre de menu créée ici aura pour parent cette page QMainWindow. Vous devez plutôt créer une barre de menu qui n'a pas de parent et que vous pouvez ensuite partager entre toutes les fenêtres de l'application Mac. Vous devez plutôt créer une barre de menus sans parent, que vous pourrez ensuite partager entre toutes les fenêtres Mac. Créez une barre de menus sans parent de cette manière :

QMenuBar *menuBar = new QMenuBar(nullptr);

Voir aussi setMenuBar().

Renvoie la barre de menu de la fenêtre principale. Cette fonction renvoie null si la barre de menu n'a pas encore été construite.

Voir aussi setMenuWidget().

void QMainWindow::removeDockWidget(QDockWidget *dockwidget)

Supprime le site dockwidget de la présentation de la fenêtre principale et le cache. Notez que le site dockwidget n' est pas supprimé.

void QMainWindow::removeToolBar(QToolBar *toolbar)

Supprime le site toolbar de la présentation de la fenêtre principale et le cache. Notez que le site toolbar n' est pas supprimé.

void QMainWindow::removeToolBarBreak(QToolBar *before)

Supprime une rupture de barre d'outils précédemment insérée avant la barre d'outils spécifiée par before.

void QMainWindow::resizeDocks(const QList<QDockWidget *> &docks, const QList<int> &sizes, Qt::Orientation orientation)

Redimensionne les widgets de la liste docks à la taille correspondante en pixels de la liste sizes. Si orientation est Qt::Horizontal, il ajuste la largeur, sinon il ajuste la hauteur des widgets de la station d'accueil. Les tailles seront ajustées de manière à ce que les tailles maximale et minimale soient respectées et que le site QMainWindow lui-même ne soit pas redimensionné. Tout espace supplémentaire/manquant est réparti entre les widgets en fonction du poids relatif des tailles.

Exemple :

    resizeDocks({blueWidget, yellowWidget}, {20 , 40}, Qt::Horizontal);

Si le widget bleu et le widget jaune sont imbriqués au même niveau, ils seront redimensionnés de telle sorte que le yellowWidget soit deux fois plus grand que le blueWidget.

Si certains widgets sont regroupés dans des onglets, un seul widget par groupe doit être spécifié. Les widgets ne figurant pas dans la liste peuvent être modifiés pour respecter les contraintes.

bool QMainWindow::restoreDockWidget(QDockWidget *dockwidget)

Restaure l'état de dockwidget s'il a été créé après l'appel à restoreState(). Retourne true si l'état a été restauré, sinon retourne false.

Voir aussi restoreState() et saveState().

bool QMainWindow::restoreState(const QByteArray &state, int version = 0)

Restaure le site state des barres d'outils et des dockwidgets de cette fenêtre principale. Les paramètres d'angle sont également restaurés. Le numéro version est comparé à celui stocké dans state. S'ils ne correspondent pas, l'état de la fenêtre principale reste inchangé et cette fonction renvoie false; sinon, l'état est restauré et cette fonction renvoie true.

Pour restaurer la géométrie sauvegardée à l'aide de QSettings, vous pouvez utiliser un code comme celui-ci :

void MainWindow::readSettings()
{
    QSettings settings("MyCompany", "MyApp");
    restoreGeometry(settings.value("myWidget/geometry").toByteArray());
    restoreState(settings.value("myWidget/windowState").toByteArray());
}

Voir aussi saveState(), QWidget::saveGeometry(), QWidget::restoreGeometry() et restoreDockWidget().

QByteArray QMainWindow::saveState(int version = 0) const

Sauvegarde l'état actuel des barres d'outils et des dockwidgets de cette fenêtre principale. Cela inclut les paramètres d'angle qui peuvent être définis à l'aide de setCorner(). Le numéro version est stocké dans les données.

La propriété objectName est utilisée pour identifier chaque QToolBar et QDockWidget. Vous devez vous assurer que cette propriété est unique pour chaque QToolBar et QDockWidget que vous ajoutez à la fenêtre principale. QMainWindow

Pour restaurer l'état sauvegardé, passez la valeur de retour et le numéro version à restoreState().

Pour sauvegarder la géométrie lorsque la fenêtre se ferme, vous pouvez implémenter un événement de fermeture comme celui-ci :

void MyMainWindow::closeEvent(QCloseEvent *event)
{
    QSettings settings("MyCompany", "MyApp");
    settings.setValue("geometry", saveGeometry());
    settings.setValue("windowState", saveState());
    QMainWindow::closeEvent(event);
}

Voir également restoreState(), QWidget::saveGeometry() et QWidget::restoreGeometry().

void QMainWindow::setCentralWidget(QWidget *widget)

Définit widget comme le widget central de la fenêtre principale.

Remarque : QMainWindow prend possession du pointeur widget et le supprime au moment opportun.

Voir aussi centralWidget().

void QMainWindow::setCorner(Qt::Corner corner, Qt::DockWidgetArea area)

Définit le widget de dock donné area pour occuper l'emplacement spécifié corner.

Voir aussi corner().

void QMainWindow::setMenuBar(QMenuBar *menuBar)

Définit la barre de menu de la fenêtre principale sur menuBar.

Remarque : QMainWindow prend possession du pointeur menuBar et le supprime au moment opportun.

Voir aussi menuBar().

void QMainWindow::setMenuWidget(QWidget *menuBar)

Définit la barre de menu de la fenêtre principale sur menuBar.

QMainWindow prend possession du pointeur menuBar et le supprime au moment opportun.

Voir aussi menuWidget().

void QMainWindow::setStatusBar(QStatusBar *statusbar)

Fixe la barre d'état de la fenêtre principale à statusbar.

En définissant la barre d'état sur nullptr, vous la supprimez de la fenêtre principale. Notez que QMainWindow prend possession du pointeur statusbar et le supprime au moment opportun.

Voir aussi statusBar().

void QMainWindow::setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition)

Définit la position de l'onglet pour le widget dock donné areas à la position spécifiée tabPosition. Par défaut, toutes les zones d'ancrage affichent leurs onglets en bas.

Remarque : l'option de dock VerticalTabs remplace les positions d'onglet définies par cette méthode.

Voir également tabPosition() et setTabShape().

void QMainWindow::splitDockWidget(QDockWidget *first, QDockWidget *second, Qt::Orientation orientation)

Divise l'espace couvert par le widget dock first en deux parties, déplace le widget dock first dans la première partie et déplace le widget dock second dans la seconde partie.

L'adresse orientation indique comment l'espace est divisé : Une division Qt::Horizontal place le deuxième dock widget à droite du premier ; une division Qt::Vertical place le deuxième dock widget en dessous du premier.

Remarque: si first se trouve actuellement dans une zone d'ancrage à onglets, second sera ajouté en tant que nouvel onglet, et non en tant que voisin de first, car un onglet ne peut contenir qu'un seul widget d'ancrage.

Remarque: l'adresse Qt::LayoutDirection influence l'ordre des widgets d'ancrage dans les deux parties de la zone divisée. Lorsque la mise en page de droite à gauche est activée, l'emplacement des widgets d'ancrage est inversé.

Voir également tabifyDockWidget(), addDockWidget() et removeDockWidget().

QStatusBar *QMainWindow::statusBar() const

Renvoie la barre d'état de la fenêtre principale. Cette fonction crée et renvoie une barre d'état vide si la barre d'état n'existe pas.

Voir aussi setStatusBar().

QTabWidget::TabPosition QMainWindow::tabPosition(Qt::DockWidgetArea area) const

Renvoie la position de tabulation pour area.

Remarque : L'option de dock VerticalTabs remplace les positions de tabulation renvoyées par cette fonction.

Voir également setTabPosition() et tabShape().

[signal] void QMainWindow::tabifiedDockWidgetActivated(QDockWidget *dockWidget)

Ce signal est émis lorsque le widget dock tabifié est activé par la sélection de l'onglet. Le widget dock activé est transmis à dockWidget.

Voir aussi tabifyDockWidget() et tabifiedDockWidgets().

QList<QDockWidget *> QMainWindow::tabifiedDockWidgets(QDockWidget *dockwidget) const

Renvoie les widgets du dock qui sont tabulés avec dockwidget.

Voir aussi tabifyDockWidget().

void QMainWindow::tabifyDockWidget(QDockWidget *first, QDockWidget *second)

Déplace le widget d'ancrage second au-dessus du widget d'ancrage first, créant ainsi une zone d'ancrage à onglets dans la fenêtre principale.

Voir aussi tabifiedDockWidgets().

QWidget *QMainWindow::takeCentralWidget()

Supprime le widget central de cette fenêtre principale.

La propriété du widget retiré est transmise à l'appelant.

Qt::ToolBarArea QMainWindow::toolBarArea(const QToolBar *toolbar) const

Renvoie le site Qt::ToolBarArea pour toolbar. Si toolbar n'a pas été ajouté à la fenêtre principale, cette fonction renvoie Qt::NoToolBarArea.

Voir aussi addToolBar(), addToolBarBreak() et Qt::ToolBarArea.

bool QMainWindow::toolBarBreak(QToolBar *toolbar) const

Renvoie si la barre d'outils est interrompue avant l'adresse toolbar.

Voir aussi addToolBarBreak() et insertToolBarBreak().

[signal] void QMainWindow::toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle)

Ce signal est émis lorsque le style utilisé pour les boutons d'outils dans la fenêtre est modifié. Le nouveau style est transmis à toolButtonStyle.

Vous pouvez connecter ce signal à d'autres composants pour aider à maintenir une apparence cohérente pour votre application.

Voir également setToolButtonStyle().

© 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.