QMdiArea Class
Le widget QMdiArea fournit une zone dans laquelle s'affichent les fenêtres MDI. En savoir plus...
| En-tête : | #include <QMdiArea> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake : | QT += widgets |
| Hérite de : | QAbstractScrollArea |
Types publics
| enum | AreaOption { DontMaximizeSubWindowOnActivation } |
| flags | AreaOptions |
| enum | ViewMode { SubWindowView, TabbedView } |
| enum | WindowOrder { CreationOrder, StackingOrder, ActivationHistoryOrder } |
Propriétés
|
|
Fonctions publiques
| QMdiArea(QWidget *parent = nullptr) | |
| virtual | ~QMdiArea() |
| QMdiArea::WindowOrder | activationOrder() const |
| QMdiSubWindow * | activeSubWindow() const |
| QMdiSubWindow * | addSubWindow(QWidget *widget, Qt::WindowFlags windowFlags = Qt::WindowFlags()) |
| QBrush | background() const |
| QMdiSubWindow * | currentSubWindow() const |
| bool | documentMode() const |
| void | removeSubWindow(QWidget *widget) |
| void | setActivationOrder(QMdiArea::WindowOrder order) |
| void | setBackground(const QBrush &background) |
| void | setDocumentMode(bool enabled) |
| void | setOption(QMdiArea::AreaOption option, bool on = true) |
| void | setTabPosition(QTabWidget::TabPosition position) |
| void | setTabShape(QTabWidget::TabShape shape) |
| void | setTabsClosable(bool closable) |
| void | setTabsMovable(bool movable) |
| void | setViewMode(QMdiArea::ViewMode mode) |
| QList<QMdiSubWindow *> | subWindowList(QMdiArea::WindowOrder order = CreationOrder) const |
| QTabWidget::TabPosition | tabPosition() const |
| QTabWidget::TabShape | tabShape() const |
| bool | tabsClosable() const |
| bool | tabsMovable() const |
| bool | testOption(QMdiArea::AreaOption option) const |
| QMdiArea::ViewMode | viewMode() const |
Fonctions publiques réimplémentées
| virtual QSize | minimumSizeHint() const override |
| virtual QSize | sizeHint() const override |
Slots publics
| void | activateNextSubWindow() |
| void | activatePreviousSubWindow() |
| void | cascadeSubWindows() |
| void | closeActiveSubWindow() |
| void | closeAllSubWindows() |
| void | setActiveSubWindow(QMdiSubWindow *window) |
| void | tileSubWindows() |
Signaux
| void | subWindowActivated(QMdiSubWindow *window) |
Fonctions protégées réimplémentées
| virtual void | childEvent(QChildEvent *childEvent) override |
| virtual bool | event(QEvent *event) override |
| virtual bool | eventFilter(QObject *object, QEvent *event) override |
| virtual void | paintEvent(QPaintEvent *paintEvent) override |
| virtual void | resizeEvent(QResizeEvent *resizeEvent) override |
| virtual void | scrollContentsBy(int dx, int dy) override |
| virtual void | showEvent(QShowEvent *showEvent) override |
| virtual void | timerEvent(QTimerEvent *timerEvent) override |
| virtual bool | viewportEvent(QEvent *event) override |
Slots protégés
| virtual void | setupViewport(QWidget *viewport) override |
Description détaillée
QMdiArea fonctionne, pour l’essentiel, comme un gestionnaire de fenêtres pour les fenêtres MDI. Par exemple, il dessine les fenêtres qu’il gère sur lui-même et les organise selon un agencement en cascade ou en mosaïque. QMdiArea est couramment utilisé comme widget central dans un « QMainWindow » pour créer des applications MDI, mais peut également être placé dans n’importe quelle disposition. Le code suivant ajoute une zone à une fenêtre principale :
QMainWindow *mainWindow = new QMainWindow;
mainWindow->setCentralWidget(mdiArea);Contrairement aux gestionnaires de fenêtres pour les fenêtres de niveau supérieur, tous les indicateurs de fenêtre (Qt::WindowFlags) sont pris en charge par QMdiArea, à condition que ces indicateurs soient pris en charge par le style de widget actuel.
Les sous-fenêtres dans QMdiArea sont des instances de ` QMdiSubWindow`. Elles sont ajoutées à une zone MDI à l’aide de la fonction ` addSubWindow()`. Il est courant de passer un ` QWidget`, qui est défini comme widget interne, à cette fonction, mais il est également possible de passer directement un ` QMdiSubWindow `. La classe hérite de QWidget, et vous pouvez utiliser la même API que pour une fenêtre de niveau supérieur normale lors de la programmation. QMdiSubWindow présente également un comportement spécifique aux fenêtres MDI. Consultez la description de la classe QMdiSubWindow pour plus de détails.
Une sous-fenêtre devient active lorsqu’elle reçoit le focus clavier ou lorsque la fonction ` setFocus()` est appelée. L’utilisateur active une fenêtre en déplaçant le focus de la manière habituelle. La zone MDI émet le signal ` subWindowActivated()` lorsque la fenêtre active change, et la fonction ` activeSubWindow()` renvoie la sous-fenêtre active.
La fonction d’aide subWindowList() renvoie une liste de toutes les sous-fenêtres. Ces informations peuvent être utilisées, par exemple, dans un menu contextuel contenant une liste de fenêtres.
Les sous-fenêtres sont triées selon l’ WindowOrder actuelle. Ce tri est utilisé pour les fonctions subWindowList(), activateNextSubWindow() et activatePreviousSubWindow(). Il est également utilisé lors de la disposition en cascade ou en mosaïque des fenêtres avec les fonctions cascadeSubWindows() et tileSubWindows().
QMdiArea fournit deux stratégies de disposition intégrées pour les sous-fenêtres : cascadeSubWindows() et tileSubWindows(). Ces deux fonctions sont des slots et peuvent être facilement associées à des entrées de menu.
![]() | ![]() |
Remarque : la propriété par défaut de la barre de défilement pour QMdiArea est Qt::ScrollBarAlwaysOff.
Voir également QMdiSubWindow.
Documentation sur les types de membres
enum QMdiArea::AreaOption
flags QMdiArea::AreaOptions
Cette énumération décrit les options permettant de personnaliser le comportement de l'QMdiArea.
| Constante | Valeur | Description |
|---|---|---|
QMdiArea::DontMaximizeSubWindowOnActivation | 0x1 | Lorsque la sous-fenêtre active est agrandie, le comportement par défaut consiste à agrandir la sous-fenêtre suivante qui est activée. Activez cette option si vous ne souhaitez pas ce comportement. |
Le type `AreaOptions` est un `typedef` pour ` QFlags<AreaOption>`. Il stocke une combinaison (ou) de valeurs `AreaOption`.
enum QMdiArea::ViewMode
Cette énumération décrit le mode d'affichage de la zone, c'est-à-dire la manière dont les sous-fenêtres seront affichées.
| Constante | Valeur | Description |
|---|---|---|
QMdiArea::SubWindowView | 0 | Affiche les sous-fenêtres avec des cadres (par défaut). |
QMdiArea::TabbedView | 1 | Affiche les sous-fenêtres avec des onglets dans une barre d’onglets. |
Voir aussi setViewMode().
enum QMdiArea::WindowOrder
Spécifie les critères à utiliser pour trier la liste des fenêtres enfants renvoyée par la fonction ` subWindowList()`. Les fonctions ` cascadeSubWindows()` et ` tileSubWindows()` respectent cet ordre lors de l'agencement des fenêtres.
| Constante | Valeur | Description |
|---|---|---|
QMdiArea::CreationOrder | 0 | Les fenêtres sont renvoyées dans l'ordre de leur création. |
QMdiArea::StackingOrder | 1 | Les fenêtres sont renvoyées dans l'ordre dans lequel elles sont empilées, la fenêtre la plus en haut de la pile apparaissant en dernier dans la liste. |
QMdiArea::ActivationHistoryOrder | 2 | Les fenêtres sont renvoyées dans l'ordre dans lequel elles ont été activées. |
Voir aussi ` subWindowList()`.
Documentation sur les propriétés
activationOrder : WindowOrder
Cette propriété contient les critères de tri pour les listes de sous-fenêtres
Cette propriété spécifie les critères de tri de la liste des sous-fenêtres renvoyée par la fonction ` subWindowList()`. Par défaut, il s'agit de l'ordre de création des fenêtres.
Fonctions d'accès :
| QMdiArea::WindowOrder | activationOrder() const |
| void | setActivationOrder(QMdiArea::WindowOrder order) |
Voir également subWindowList().
background : QBrush
Cette propriété définit le pinceau d'arrière-plan de l'espace de travail
Cette propriété définit le pinceau d'arrière-plan de la zone de travail elle-même. Par défaut, il s'agit d'une couleur grise, mais il peut s'agir de n'importe quel pinceau (par exemple, des couleurs, des dégradés ou des images bitmap).
Fonctions d'accès :
| QBrush | background() const |
| void | setBackground(const QBrush &background) |
documentMode : bool
Cette propriété indique si la barre d'onglets est configurée en mode « document » dans le mode d'affichage par onglets.
Le mode document est désactivé par défaut.
Fonctions d'accès :
| bool | documentMode() const |
| void | setDocumentMode(bool enabled) |
Voir également QTabBar::documentMode et setViewMode().
tabPosition : QTabWidget::TabPosition
Cette propriété définit la position des onglets en mode d'affichage par onglets.
Les valeurs possibles pour cette propriété sont décrites par l'énumération QTabWidget::TabPosition.
Fonctions d'accès :
| QTabWidget::TabPosition | tabPosition() const |
| void | setTabPosition(QTabWidget::TabPosition position) |
Voir également QTabWidget::TabPosition et setViewMode().
tabShape : QTabWidget::TabShape
Cette propriété définit la forme des onglets en mode d'affichage par onglets.
Les valeurs possibles pour cette propriété sont « QTabWidget::Rounded » (par défaut) ou « QTabWidget::Triangular ».
Fonctions d'accès :
| QTabWidget::TabShape | tabShape() const |
| void | setTabShape(QTabWidget::TabShape shape) |
Voir également QTabWidget::TabShape et setViewMode().
tabsClosable : bool
Cette propriété détermine si la barre d'onglets doit afficher des boutons de fermeture sur chaque onglet en mode d'affichage par onglets.
Par défaut, les onglets ne peuvent pas être fermés.
Fonctions d'accès :
| bool | tabsClosable() const |
| void | setTabsClosable(bool closable) |
Voir également QTabBar::tabsClosable et setViewMode().
tabsMovable : bool
Cette propriété détermine si l'utilisateur peut déplacer les onglets dans la zone de la barre d'onglets en mode d'affichage par onglets.
Par défaut, les onglets ne peuvent pas être déplacés.
Fonctions d'accès :
| bool | tabsMovable() const |
| void | setTabsMovable(bool movable) |
Voir également QTabBar::movable et setViewMode().
viewMode : ViewMode
Cette propriété définit la manière dont les sous-fenêtres s'affichent dans l'QMdiArea.
Par défaut, l'SubWindowView est utilisé pour afficher les sous-fenêtres.
Fonctions d'accès :
| QMdiArea::ViewMode | viewMode() const |
| void | setViewMode(QMdiArea::ViewMode mode) |
Voir également ViewMode, setTabShape() et setTabPosition().
Documentation sur les fonctions membres
QMdiArea::QMdiArea(QWidget *parent = nullptr)
Crée une zone MDI vide. L'objet ` parent ` est transmis au constructeur de ` QWidget`.
[virtual noexcept] QMdiArea::~QMdiArea()
Supprime la zone MDI.
[slot] void QMdiArea::activateNextSubWindow()
Attribue le focus clavier à une autre fenêtre de la liste des fenêtres enfants. La fenêtre activée sera la suivante, telle que déterminée par l'activation order.
Voir également ` activatePreviousSubWindow()` et ` QMdiArea::WindowOrder`.
[slot] void QMdiArea::activatePreviousSubWindow()
Attribue le focus clavier à une autre fenêtre de la liste des fenêtres enfants. La fenêtre activée sera la précédente, telle que déterminée par la variable activation order.
Voir également ` activateNextSubWindow()` et ` QMdiArea::WindowOrder`.
QMdiSubWindow *QMdiArea::activeSubWindow() const
Renvoie un pointeur vers la sous-fenêtre actuellement active. Si aucune fenêtre n'est active, la valeur « nullptr » est renvoyée.
Les sous-fenêtres sont traitées comme des fenêtres de premier niveau en ce qui concerne l’état de la fenêtre ; ainsi, si un widget situé en dehors de la zone MDI est la fenêtre active, aucune sous-fenêtre ne sera active. Notez que si un widget de la fenêtre dans laquelle se trouve la zone MDI obtient le focus, la fenêtre sera activée.
Voir également setActiveSubWindow() et Qt::WindowState.
QMdiSubWindow *QMdiArea::addSubWindow(QWidget *widget, Qt::WindowFlags windowFlags = Qt::WindowFlags())
Ajoute widget en tant que nouvelle sous-fenêtre à la zone MDI. Si windowFlags sont différents de zéro, ils remplaceront les indicateurs définis sur le widget.
L’ widget peut être soit un QMdiSubWindow, soit un autre QWidget (auquel cas la zone MDI créera une sous-fenêtre et définira l’ widget comme widget interne).
Remarque : une fois la sous-fenêtre ajoutée, son parent sera le widget de zone d’affichage de l’ QMdiArea.
QMdiArea mdiArea;
QMdiSubWindow *subWindow1 = new QMdiSubWindow;
subWindow1->setWidget(internalWidget1);
subWindow1->setAttribute(Qt::WA_DeleteOnClose);
mdiArea.addSubWindow(subWindow1);
QMdiSubWindow *subWindow2 =
mdiArea.addSubWindow(internalWidget2);Lorsque vous créez votre propre sous-fenêtre, vous devez définir l’attribut « Qt::WA_DeleteOnClose » du widget si vous souhaitez que la fenêtre soit supprimée lorsqu’elle est fermée dans la zone MDI. Sinon, la fenêtre sera masquée et la zone MDI n’activera pas la sous-fenêtre suivante.
Renvoie l’ QMdiSubWindow qui est ajoutée à la zone MDI.
Voir aussi removeSubWindow().
[slot] void QMdiArea::cascadeSubWindows()
Dispose toutes les fenêtres enfants en cascade.
Voir également tileSubWindows().
[override virtual protected] void QMdiArea::childEvent(QChildEvent *childEvent)
Réimplémente : QObject::childEvent(QChildEvent *event).
[slot] void QMdiArea::closeActiveSubWindow()
Ferme la sous-fenêtre active.
Voir aussi closeAllSubWindows().
[slot] void QMdiArea::closeAllSubWindows()
Ferme toutes les sous-fenêtres en envoyant un événement « QCloseEvent » à chacune d’entre elles. Vous pouvez recevoir des signaux « subWindowActivated() » provenant des sous-fenêtres avant leur fermeture (si la zone MDI active une sous-fenêtre alors qu’une autre est en train de se fermer).
Les sous-fenêtres qui ignorent l'événement de fermeture resteront ouvertes.
Voir également closeActiveSubWindow().
QMdiSubWindow *QMdiArea::currentSubWindow() const
Renvoie un pointeur vers la sous-fenêtre active, ou ` nullptr ` s'il n'y a pas de sous-fenêtre active.
Cette fonction renvoie le même résultat que activeSubWindow() si l'QApplication contenant QMdiArea est active.
Voir également activeSubWindow() et QApplication::activeWindow().
[override virtual protected] bool QMdiArea::event(QEvent *event)
Réimplémente : QAbstractScrollArea::event(QEvent *event).
[override virtual protected] bool QMdiArea::eventFilter(QObject *object, QEvent *event)
Réimplémente : QObject::eventFilter(QObject *watched, QEvent *event).
[override virtual] QSize QMdiArea::minimumSizeHint() const
Réimplémente : ` QAbstractScrollArea::minimumSizeHint()` const.
[override virtual protected] void QMdiArea::paintEvent(QPaintEvent *paintEvent)
Réimplémente : QAbstractScrollArea::paintEvent(QPaintEvent *event).
void QMdiArea::removeSubWindow(QWidget *widget)
Supprime widget de la zone MDI. L’ widget e doit être soit un QMdiSubWindow, soit un widget qui est le widget interne d’une sous-fenêtre. Remarque : widget n’est en réalité jamais supprimé par QMdiArea. Si un QMdiSubWindow est passé en paramètre, son parent est défini sur nullptr et il est supprimé ; mais si un widget interne est passé en paramètre, le widget enfant est défini sur nullptr et l’ QMdiSubWindow n’ est pas supprimé.
Voir également addSubWindow().
[override virtual protected] void QMdiArea::resizeEvent(QResizeEvent *resizeEvent)
Réimplémente : QAbstractScrollArea::resizeEvent(QResizeEvent *event).
[override virtual protected] void QMdiArea::scrollContentsBy(int dx, int dy)
Réimplémentation de : QAbstractScrollArea::scrollContentsBy(int dx, int dy).
[slot] void QMdiArea::setActiveSubWindow(QMdiSubWindow *window)
Active la sous-fenêtre window. Si window est nullptr, toute fenêtre actuellement active est désactivée.
Voir également activeSubWindow().
void QMdiArea::setOption(QMdiArea::AreaOption option, bool on = true)
Si la valeur de on est « true », la fonction « option » est activée dans la zone MDI ; dans le cas contraire, elle est désactivée. Consultez AreaOption pour connaître l'effet de chaque option.
Voir également AreaOption et testOption().
[override virtual protected slot] void QMdiArea::setupViewport(QWidget *viewport)
Réimplémente : QAbstractScrollArea::setupViewport(QWidget *viewport).
Ce slot est appelé par ` QAbstractScrollArea ` après l'appel de ` setViewport()`. Réimplémentez cette fonction dans une sous-classe de ` QMdiArea ` pour initialiser le nouvel ` viewport ` avant son utilisation.
Voir également setViewport().
[override virtual protected] void QMdiArea::showEvent(QShowEvent *showEvent)
Réimplémente : QWidget::showEvent(QShowEvent *event).
[override virtual] QSize QMdiArea::sizeHint() const
Réimplémente : QAbstractScrollArea::sizeHint() const.
[signal] void QMdiArea::subWindowActivated(QMdiSubWindow *window)
QMdiArea émet ce signal une fois que la fonction « window » a été activée. Lorsque « window » vaut « nullptr », « QMdiArea » vient de désactiver sa dernière fenêtre active et il n'y a plus aucune fenêtre active dans l'espace de travail.
Voir également QMdiArea::activeSubWindow().
QList<QMdiSubWindow *> QMdiArea::subWindowList(QMdiArea::WindowOrder order = CreationOrder) const
Renvoie une liste de toutes les sous-fenêtres présentes dans la zone MDI. Si order est défini sur CreationOrder (valeur par défaut), les fenêtres sont triées dans l’ordre dans lequel elles ont été insérées dans l’espace de travail. Si order est défini sur StackingOrder, les fenêtres sont répertoriées dans leur ordre d’empilement, la fenêtre la plus en haut apparaissant en dernier dans la liste. Si order est défini sur ActivationHistoryOrder, les fenêtres sont répertoriées en fonction de leur historique d’activation récent.
Voir également WindowOrder.
bool QMdiArea::testOption(QMdiArea::AreaOption option) const
Renvoie « true » si « option » est activé ; sinon, renvoie « false ».
Voir également AreaOption et setOption().
[slot] void QMdiArea::tileSubWindows()
Dispose toutes les fenêtres enfants selon un motif en mosaïque.
Voir aussi cascadeSubWindows().
[override virtual protected] void QMdiArea::timerEvent(QTimerEvent *timerEvent)
Réimplémente : QObject::timerEvent(QTimerEvent *event).
[override virtual protected] bool QMdiArea::viewportEvent(QEvent *event)
Réimplémente : QAbstractScrollArea::viewportEvent(QEvent *event).
© 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.

