QMainWindow Class
La classe `QMainWindow` permet de créer une fenêtre principale d'application. En savoir plus...
| En-tête : | #include <QMainWindow> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake : | QT += widgets |
| Hérite de : | 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
Framework de fenêtre principale Qt
Une fenêtre principale fournit une infrastructure permettant de créer l'interface utilisateur d'une application. Qt dispose de QMainWindow et de ses classes associées pour la gestion de la fenêtre principale. QMainWindow possède sa propre mise en page à laquelle vous pouvez ajouter des « QToolBars », des « QDockWidgets », un « QMenuBar » et un « QStatusBar ». La mise en page comporte une zone centrale qui peut être occupée par n’importe quel type de widget. Vous pouvez voir une image de cette mise en page ci-dessous.

Création des composants de la fenêtre principale
Un widget central est généralement un widget Qt standard, tel qu’un QTextEdit ou un QGraphicsView. Des widgets personnalisés peuvent également être utilisés pour des applications avancées. Vous définissez le widget central à l’aide de setCentralWidget().
Les fenêtres principales disposent d’une interface à document unique (SDI) ou à documents multiples (MDI). Dans Qt, on crée des applications MDI en utilisant un ` QMdiArea ` comme widget central.
Nous allons maintenant examiner chacun des autres widgets pouvant être ajoutés à une fenêtre principale. Nous donnons des exemples illustrant comment les créer et les ajouter.
Création de menus
Qt implémente les menus dans ` QMenu ` et `QMainWindow` les stocke dans une ` QMenuBar`. Des ` QAction` sont ajoutés aux menus, qui les affichent sous forme d’éléments de menu.
Vous pouvez ajouter de nouveaux menus à la barre de menus de la fenêtre principale en appelant ` menuBar()`, qui renvoie l’` QMenuBar ` de la fenêtre, puis en ajoutant un menu à l’aide de ` QMenuBar::addMenu()`.
QMainWindow est fournie avec une barre de menus par défaut, mais vous pouvez également en définir une vous-même à l’aide de la fonction ` setMenuBar()`. Si vous souhaitez implémenter une barre de menus personnalisée (c’est-à-dire ne pas utiliser le widget ` QMenuBar `), vous pouvez la définir à l’aide de la fonction ` setMenuWidget()`.
Voici un exemple illustrant comment créer des 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 contenant les actions cochables issues des widgets du dock et des barres d'outils. Vous pouvez réimplémenter createPopupMenu() pour obtenir 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 ` addToolBar()`.
Vous contrôlez la position initiale des barres d’outils en les attribuant à un Qt::ToolBarArea spécifique. Vous pouvez diviser une zone en insérant une coupure de barre d’outils — à considérer comme un saut de ligne dans l’édition de texte — à l’aide de addToolBarBreak() ou insertToolBarBreak(). Vous pouvez également restreindre 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 à l'aide de setIconSize(). Vous pouvez modifier l'apparence de tous les boutons d'outils dans les barres d'outils à l'aide de 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 ancrables
Les widgets d’ancrage sont implémentés dans la classe ` QDockWidget `. Un widget d’ancrage est une fenêtre pouvant être ancrée dans la fenêtre principale. Vous ajoutez des widgets d’ancrage à une fenêtre principale à l’aide de ` addDockWidget()`.
Il existe quatre zones de widgets d'ancrage, 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 ligne (verticale ou horizontale) de widgets d'ancrage, mais si vous activez l'imbrication à l'aide de ` setDockNestingEnabled()`, les widgets d'ancrage peuvent être ajoutés dans les deux sens.
Deux widgets d’ancrage peuvent également être empilés l’un sur l’autre. Une propriété « QTabBar » est alors utilisée pour sélectionner lequel des widgets doit être affiché.
Voici un exemple illustrant comment créer et ajouter des widgets d'ancrage à 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 celle-ci est créée lors du premier appel de ` statusBar() ` (qui renvoie la barre d’état de la fenêtre principale). Consultez ` QStatusBar ` pour plus d’informations sur son utilisation.
Enregistrement de l’état
QMainWindow peut enregistrer l’état de sa disposition à l’aide de ` saveState()` ; celui-ci peut ensuite être récupéré avec ` restoreState()`. Ce sont la position et la taille (par rapport à la taille de la fenêtre principale) des barres d’outils et des widgets ancrables qui sont enregistrées.
Considérations de sécurité
La fonction restoreState() désérialise un blob binaire versionné qui décrit la disposition des barres d’outils et des widgets d’ancrage, y compris une structure arborescente imbriquée de manière récursive pour les zones d’ancrage divisées et à onglets. Le marqueur magique et la version du format sont validés, mais les champs individuels — tels que les indices des zones d'ancrage et la profondeur de l'arborescence de disposition imbriquée — ne font pas l'objet d'une vérification des limites par rapport à la configuration réelle de la fenêtre principale une fois que la structure externe a été acceptée.
Ne transmettez à la fonction ` restoreState()` qu’un objet ` QByteArray ` ayant été préalablement généré par la fonction ` saveState()` et persisté par la même version — ou une version compatible — de votre application, généralement via la méthode ` QSettings`. N’appelez pas la fonction ` restoreState()` avec des données d’origine inconnue ou non fiable, telles qu’un fichier téléchargé depuis le réseau, un fichier de configuration synchronisé ou partagé, ou des données fournies par une autre application potentiellement compromise.
Voir également QMenuBar, QToolBar, QStatusBar, QDockWidget et l’exemple « Menus ».
Documentation sur les types de membres
enum QMainWindow::DockOption
flags QMainWindow::DockOptions
Cette énumération contient des indicateurs qui définissent le comportement d'ancrage de QMainWindow.
| Constante | Valeur | Description |
|---|---|---|
QMainWindow::AnimatedDocks | 0x01 | Identique à la propriété animated. |
QMainWindow::AllowNestedDocks | 0x02 | Identique à la propriété dockNestingEnabled. |
QMainWindow::AllowTabbedDocks | 0x04 | L'utilisateur peut faire glisser un widget d'ancrage « par-dessus » un autre. Les deux widgets sont empilés et une barre d'onglets apparaît pour sélectionner celui qui sera visible. |
QMainWindow::ForceTabbedDocks | 0x08 | Chaque zone de dock contient une seule pile de widgets de dock à onglets. En d'autres termes, les widgets de dock ne peuvent pas être placés les uns à côté des autres dans une zone de dock. Si cette option est activée, AllowNestedDocks n'a aucun effet. |
QMainWindow::VerticalTabs | 0x10 | Les deux zones d'ancrage verticales situées de part et d'autre de la fenêtre principale affichent leurs onglets à la verticale. Si cette option n'est pas activée, toutes les zones d'ancrage affichent leurs onglets en bas. Implique AllowTabbedDocks. Voir également setTabPosition(). |
QMainWindow::GroupedDragging | 0x20 | Lors du glissement de la barre de titre d’un dock, tous les onglets qui y sont associés seront également déplacés. Implique l’option AllowTabbedDocks. Ne fonctionne pas correctement si certains QDockWidgets sont soumis à des restrictions quant à la zone dans laquelle 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 d’ancrage peuvent être déposés dans un QMainWindow. Elles ne réorganisent pas les widgets d’ancrage pour les conformer aux options spécifiées. C’est pourquoi elles doivent être définies avant l’ajout de tout widget d’ancrage à la fenêtre principale. Les options AnimatedDocks et VerticalTabs font exception à cette règle et peuvent être définies à tout moment.
Le type `DockOptions` est un `typedef` de ` QFlags<DockOption>`. Il stocke une combinaison (ou) de valeurs `DockOption`.
Documentation des propriétés
animated : bool
Cette propriété détermine 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 glissé(e) au-dessus de la fenêtre principale, celle-ci ajuste son contenu pour indiquer où le widget d’ancrage ou la barre d’outils sera ancré(e) s’il est déposé(e). L’activation de cette propriété fait en sorte que QMainWindow déplace son contenu selon une animation fluide. La désactivation de cette propriété fait en sorte que le contenu s’aligne instantanément sur ses nouvelles positions.
Par défaut, cette propriété est activée. Elle peut être désactivée si la fenêtre principale contient des widgets dont le redimensionnement ou le rafraîchissement sont lents.
L'activation de cette propriété revient à activer l'option « AnimatedDocks » à l'aide de la fonction ` setDockOptions()`.
Fonctions d'accès :
| bool | isAnimated() const |
| void | setAnimated(bool enabled) |
dockNestingEnabled : bool
Cette propriété détermine si les docks peuvent être imbriqués
Si cette propriété est définie sur « false », les zones d'ancrage ne peuvent contenir qu'une seule ligne (horizontale ou verticale) de widgets d'ancrage. Si cette propriété est définie sur « true », la zone occupée par un widget d'ancrage peut être divisée dans les deux sens pour contenir davantage de widgets d'ancrage.
L'imbrication des docks n'est nécessaire que dans les applications contenant un grand nombre de widgets de dock. Elle offre à l'utilisateur une plus grande liberté dans l'organisation de sa fenêtre principale. Cependant, l’imbrication des docks entraîne un comportement plus complexe (et moins intuitif) lorsqu’un widget de dock est glissé sur la fenêtre principale, car il existe davantage de façons de placer un widget de dock déposé dans la zone de dock.
La configuration de cette propriété est identique à celle de l'option « AllowNestedDocks » à l'aide de la fonction 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 widgets ancrés à onglets est configurée 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 correspond à la taille par défaut des icônes de la barre d'outils du style d'interface graphique. Notez que les icônes utilisées doivent avoir au moins cette taille, car elles sont uniquement 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ée pour les widgets d'ancrage à onglets.
La valeur par défaut est « QTabWidget::Rounded ».
Fonctions d'accès :
| QTabWidget::TabShape | tabShape() const |
| void | setTabShape(QTabWidget::TabShape tabShape) |
Voir aussi setTabPosition().
toolButtonStyle : Qt::ToolButtonStyle
Style des boutons de la barre d'outils dans cette fenêtre principale.
Pour que le style des boutons de la barre d'outils suive les paramètres 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 plateformes, 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é s'applique que la fenêtre utilise ou non l'apparence unifiée du titre et de la barre d'outils sous macOS
Notez que l’implémentation Qt 5 présente plusieurs limitations par rapport à Qt 4 :
- L'utilisation dans des fenêtres contenant du contenu OpenGL n'est pas prise en charge. Cela inclut QOpenGLWidget.
- L'utilisation de barres d'outils ancrables ou déplaçables peut entraîner des erreurs d'affichage 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())
Crée une fenêtre QMainWindow avec l'parent on indiquée et le widget spécifié flags.
QMainWindow active lui-même l'indicateur « Qt::Window » et sera donc toujours créé en tant que widget de niveau supérieur.
[virtual noexcept] QMainWindow::~QMainWindow()
Ferme la fenêtre principale.
void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget)
Ajoute l'dockwidget ion indiquée à l'area spécifiée dans la fenêtre principale.
void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget, Qt::Orientation orientation)
Ajoute dockwidget à l'area indiquée, dans la direction spécifiée par orientation.
void QMainWindow::addToolBar(Qt::ToolBarArea area, QToolBar *toolbar)
Ajoute l'toolbar à l'area spécifiée dans cette fenêtre principale. L'toolbar est placée à la fin du bloc (c'est-à-dire de la ligne) actuel de la barre d'outils. Si la fenêtre principale gère déjà toolbar, la barre d'outils sera simplement déplacée vers area.
Voir également insertToolBar(), addToolBarBreak() et insertToolBarBreak().
void QMainWindow::addToolBar(QToolBar *toolbar)
Cela revient à appeler addToolBar(Qt::TopToolBarArea, toolbar)
Il s'agit d'une fonction surchargée.
QToolBar *QMainWindow::addToolBar(const QString &title)
Crée un objet ` QToolBar `, en définissant le titre de sa fenêtre sur « title », puis l'insère dans la zone de la barre d'outils supérieure.
Il s'agit d'une fonction surchargée.
Voir également setWindowTitle().
void QMainWindow::addToolBarBreak(Qt::ToolBarArea area = Qt::TopToolBarArea)
Ajoute une coupure de barre d'outils à l'area on indiquée, 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 du dock qui occupe l'corner spécifiée.
Voir aussi setCorner().
[virtual] QMenu *QMainWindow::createPopupMenu()
Renvoie un menu contextuel contenant des éléments cochables correspondant aux barres d'outils et aux widgets ancrés présents dans la fenêtre principale. S'il n'y a ni barres d'outils ni widgets ancrés, 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 également addDockWidget(), addToolBar() et menuBar().
Qt::DockWidgetArea QMainWindow::dockWidgetArea(QDockWidget *dockwidget) const
Renvoie l'Qt::DockWidgetArea pour dockwidget. Si dockwidget n'a pas été ajouté à la fenêtre principale, cette fonction renvoie Qt::NoDockWidgetArea.
Voir également 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 des icônes est transmise dans ` iconSize`.
Vous pouvez connecter ce signal à d'autres composants afin de garantir une apparence cohérente à votre application.
Voir également setIconSize().
void QMainWindow::insertToolBar(QToolBar *before, QToolBar *toolbar)
Insère l'élément toolbar dans la zone occupée par la barre d'outils before afin qu'il apparaisse avant celle-ci. Par exemple, dans le cadre d'une mise en page normale de gauche à droite, cela signifie que l'élément 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 coupure de barre d'outils avant la barre d'outils spécifiée par ` before`.
QMenuBar *QMainWindow::menuBar() const
Renvoie la barre de menus de la fenêtre principale. Cette fonction crée et renvoie une barre de menus vide si celle-ci n'existe pas.
Si vous souhaitez que toutes les fenêtres d’une application Mac partagent une même barre de menus, n’utilisez pas cette fonction pour la créer, car la barre de menus ainsi créée aura pour parent l’ QMainWindow. 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 la manière suivante :
Voir également ` setMenuBar()` ().
QWidget *QMainWindow::menuWidget() const
Renvoie la barre de menu de la fenêtre principale. Cette fonction renvoie `null` si aucune barre de menu n'a encore été créée.
Voir aussi setMenuWidget().
void QMainWindow::removeDockWidget(QDockWidget *dockwidget)
Supprime l'dockwidget e de la disposition de la fenêtre principale et le masque. Notez que l'dockwidget e n' est pas supprimé.
void QMainWindow::removeToolBar(QToolBar *toolbar)
Supprime l'toolbar e de la disposition de la fenêtre principale et la masque. Notez que l'toolbar e n' est pas supprimée.
void QMainWindow::removeToolBarBreak(QToolBar *before)
Supprime une coupure 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 du dock figurant dans la liste docks en fonction des tailles correspondantes en pixels indiquées dans la liste sizes. Si orientation vaut Qt::Horizontal, la largeur est ajustée ; dans le cas contraire, c'est la hauteur des widgets du dock qui est ajustée. Les tailles seront ajustées de manière à respecter les tailles maximale et minimale, et l'QMainWindow e lui-même ne sera pas redimensionné. Tout espace supplémentaire ou manquant est réparti entre les widgets en fonction du poids relatif de leurs tailles.
Exemple :
resizeDocks({blueWidget, yellowWidget}, {20 , 40}, Qt::Horizontal);Si les widgets bleu et jaune sont imbriqués au même niveau, ils seront redimensionnés de manière à ce que le widget jaune soit deux fois plus grand que le widget bleu.
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(). Renvoie true si l'état a été restauré ; sinon, renvoie false.
Voir également restoreState() et saveState().
bool QMainWindow::restoreState(const QByteArray &state, int version = 0)
Restaure l'state des barres d'outils et des widgets ancrables de cette fenêtre principale. Restaure également les paramètres des coins. Le nombre 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; dans le cas contraire, l'état est restauré et cette fonction renvoie true.
Pour restaurer la géométrie enregistrée à l’aide de ` QSettings`, vous pouvez utiliser un code similaire à celui-ci :
void MainWindow::readSettings()
{
QSettings settings("MyCompany", "MyApp");
restoreGeometry(settings.value("myWidget/geometry").toByteArray());
restoreState(settings.value("myWidget/windowState").toByteArray());
}Voir également saveState(), QWidget::saveGeometry(), QWidget::restoreGeometry() et restoreDockWidget().
QByteArray QMainWindow::saveState(int version = 0) const
Enregistre l'état actuel des barres d'outils et des widgets ancrables de cette fenêtre principale. Cela inclut les paramètres de coin pouvant être définis à l'aide de la fonction setCorner(). Le numéro d'version est stocké dans les données.
La propriété ` objectName ` sert à identifier chaque ` QToolBar ` et ` QDockWidget`. Vous devez vous assurer que cette propriété est unique pour chaque ` QToolBar ` et ` QDockWidget ` que vous ajoutez à la QMainWindow
Pour restaurer l’état enregistré, transmettez la valeur de retour et le numéro version à restoreState().
Pour enregistrer la géométrie à la fermeture de la fenêtre, vous pouvez implémenter un événement de fermeture comme suit :
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 l'widget spécifié comme 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 area pour qu'il occupe l'emplacement spécifié corner.
Voir également corner().
void QMainWindow::setMenuBar(QMenuBar *menuBar)
Définit la barre de menus de la fenêtre principale sur « menuBar ».
Remarque : la fonction ` QMainWindow ` prend en charge le 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)
Définit la barre d'état de la fenêtre principale sur « statusbar ».
Définir la barre d’état sur ` nullptr ` la supprime de la fenêtre principale. Notez que la fonction ` QMainWindow ` prend en charge le pointeur ` statusbar ` et le supprime au moment opportun.
Voir également statusBar().
void QMainWindow::setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition)
Définit la position des onglets du widget d'ancrage areas sur la valeur spécifiée tabPosition. Par défaut, toutes les zones d'ancrage affichent leurs onglets en bas.
Remarque : l’option dock ` VerticalTabs ` remplace les positions d’onglets définies par cette méthode.
Voir également tabPosition() et setTabShape().
void QMainWindow::splitDockWidget(QDockWidget *first, QDockWidget *second, Qt::Orientation orientation)
Divise l’espace occupé par le widget d’ancrage « first » en deux parties, déplace le widget d’ancrage « first » dans la première partie et le widget d’ancrage « second » dans la seconde partie.
L'option « orientation » (Mode de division) spécifie comment l'espace est divisé : une division « Qt::Horizontal » place le deuxième widget ancré à droite du premier ; une division « Qt::Vertical » place le deuxième widget ancré 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 à côté de first. En effet, un même onglet ne peut contenir qu’un seul widget d’ancrage.
Remarque: la méthode ` Qt::LayoutDirection ` influence l’ordre des widgets d’ancrage dans les deux parties de la zone divisée. Lorsque la direction de mise en page de droite à gauche est activée, l’ordre des widgets d’ancrage sera 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 celle-ci n'existe pas.
Voir aussi setStatusBar().
QTabWidget::TabPosition QMainWindow::tabPosition(Qt::DockWidgetArea area) const
Renvoie la position des tabulations pour area.
Remarque : l'option « VerticalTabs » du dock remplace les positions des onglets renvoyées par cette fonction.
Voir également ` setTabPosition()` et ` tabShape()`.
[signal] void QMainWindow::tabifiedDockWidgetActivated(QDockWidget *dockWidget)
Ce signal est émis lorsque le widget du dock à onglets est activé par la sélection de l'onglet. Le widget du dock activé est transmis via ` dockWidget`.
Voir également ` tabifyDockWidget()` et ` tabifiedDockWidgets()`.
QList<QDockWidget *> QMainWindow::tabifiedDockWidgets(QDockWidget *dockwidget) const
Renvoie les widgets du dock regroupés sous forme d'onglets à l'aide de la fonction ` 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 à l'emplacement actuel de « first ».
Les deux widgets de dock doivent avoir été ajoutés à la fenêtre principale à l’aide de la fonction addDockWidget() avant l’appel de cette fonction, et aucun des deux ne doit déjà comporter d’onglets.
Voir également tabifiedDockWidgets() et addDockWidget().
QWidget *QMainWindow::takeCentralWidget()
Supprime le widget central de cette fenêtre principale.
La propriété du widget supprimé est transférée à l'appelant.
Qt::ToolBarArea QMainWindow::toolBarArea(const QToolBar *toolbar) const
Renvoie l’ Qt::ToolBarArea pour toolbar. Si toolbar n’a pas été ajouté à la fenêtre principale, cette fonction renvoie Qt::NoToolBarArea.
Voir également addToolBar(), addToolBarBreak() et Qt::ToolBarArea.
bool QMainWindow::toolBarBreak(QToolBar *toolbar) const
Indique s'il existe une coupure de barre d'outils avant l'élément toolbar.
Voir également addToolBarBreak() et insertToolBarBreak().
[signal] void QMainWindow::toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle)
Ce signal est émis lorsque le style utilisé pour les boutons d'outils de la fenêtre est modifié. Le nouveau style est transmis dans ` toolButtonStyle`.
Vous pouvez connecter ce signal à d’autres composants afin de garantir une apparence cohérente à 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.