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.

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.
| 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 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::ForceTabbedDocks | 0x08 | Chaque 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::VerticalTabs | 0x10 | Les 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::GroupedDragging | 0x20 | Lorsque 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.
QMenuBar *QMainWindow::menuBar() const
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 :
Voir aussi setMenuBar().
QWidget *QMainWindow::menuWidget() const
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.