QMdiSubWindow Class
La classe QMdiSubWindow fournit une classe de sous-fenêtre pour QMdiArea. En savoir plus...
| En-tête : | #include <QMdiSubWindow> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake : | QT += widgets |
| Hérite de : | QWidget |
Types publics
| enum | SubWindowOption { RubberBandResize, RubberBandMove } |
| flags | SubWindowOptions |
Propriétés
- keyboardPageStep : int
- keyboardSingleStep : int
Fonctions publiques
| QMdiSubWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | |
| virtual | ~QMdiSubWindow() |
| bool | isShaded() const |
| int | keyboardPageStep() const |
| int | keyboardSingleStep() const |
| QMdiArea * | mdiArea() const |
| void | setKeyboardPageStep(int step) |
| void | setKeyboardSingleStep(int step) |
| void | setOption(QMdiSubWindow::SubWindowOption option, bool on = true) |
| void | setSystemMenu(QMenu *systemMenu) |
| void | setWidget(QWidget *widget) |
| QMenu * | systemMenu() const |
| bool | testOption(QMdiSubWindow::SubWindowOption option) const |
| QWidget * | widget() const |
Fonctions publiques réimplémentées
| virtual QSize | minimumSizeHint() const override |
| virtual QSize | sizeHint() const override |
Slots publics
| void | showShaded() |
| void | showSystemMenu() |
Signaux
| void | aboutToActivate() |
| void | windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState) |
Fonctions protégées réimplémentées
| virtual void | changeEvent(QEvent *changeEvent) override |
| virtual void | childEvent(QChildEvent *childEvent) override |
| virtual void | closeEvent(QCloseEvent *closeEvent) override |
| virtual void | contextMenuEvent(QContextMenuEvent *contextMenuEvent) override |
| virtual bool | event(QEvent *event) override |
| virtual bool | eventFilter(QObject *object, QEvent *event) override |
| virtual void | focusInEvent(QFocusEvent *focusInEvent) override |
| virtual void | focusOutEvent(QFocusEvent *focusOutEvent) override |
| virtual void | hideEvent(QHideEvent *hideEvent) override |
| virtual void | keyPressEvent(QKeyEvent *keyEvent) override |
| virtual void | leaveEvent(QEvent *leaveEvent) override |
| virtual void | mouseDoubleClickEvent(QMouseEvent *mouseEvent) override |
| virtual void | mouseMoveEvent(QMouseEvent *mouseEvent) override |
| virtual void | mousePressEvent(QMouseEvent *mouseEvent) override |
| virtual void | mouseReleaseEvent(QMouseEvent *mouseEvent) override |
| virtual void | moveEvent(QMoveEvent *moveEvent) override |
| virtual void | paintEvent(QPaintEvent *paintEvent) override |
| virtual void | resizeEvent(QResizeEvent *resizeEvent) override |
| virtual void | showEvent(QShowEvent *showEvent) override |
| virtual void | timerEvent(QTimerEvent *timerEvent) override |
Description détaillée
QMdiSubWindow représente une fenêtre de niveau supérieur dans une QMdiArea et se compose d’une barre de titre avec des décorations de fenêtre, d’un widget interne et (selon le style actuel) d’un cadre de fenêtre et d’une poignée de redimensionnement. QMdiSubWindow possède sa propre disposition, qui se compose de la barre de titre et d’une zone centrale destinée au widget interne.

La méthode la plus courante pour créer une QMdiSubWindow consiste à appeler QMdiArea::addSubWindow() en passant le widget interne en argument. Vous pouvez également créer vous-même une sous-fenêtre et y définir un widget interne en appelant setWidget().
La programmation des sous-fenêtres s'effectue à l'aide de la même API que celle utilisée pour les fenêtres de niveau supérieur classiques (vous pouvez par exemple appeler des fonctions telles que ` show()`, ` hide()`, ` showMaximized()` et ` setWindowTitle()`).
Gestion des sous-fenêtres
QMdiSubWindow prend également en charge le comportement spécifique aux sous-fenêtres dans une zone MDI.
Par défaut, chaque QMdiSubWindow est visible dans la fenêtre d’affichage de la zone MDI lorsqu’elle est déplacée, mais il est également possible de spécifier un comportement de déplacement et de redimensionnement transparent, dans lequel seul le contour d’une sous-fenêtre est mis à jour lors de ces opérations. La fonction setOption() est utilisée pour activer ce comportement.
La fonction ` isShaded()` détecte si la sous-fenêtre est actuellement en mode « ombré » (c'est-à-dire que la fenêtre est réduite de sorte que seule la barre de titre est visible). Pour passer en mode « ombré », appelez ` showShaded()`. QMdiSubWindow émet le signal ` windowStateChanged()` chaque fois que l’état de la fenêtre change (par exemple, lorsque la fenêtre est réduite ou restaurée). Elle émet également le signal ` aboutToActivate()` avant d’être activée.
En mode interactif au clavier, les fenêtres sont déplacées et redimensionnées à l’aide du clavier. Vous pouvez accéder à ce mode via le menu système de la fenêtre. Les propriétés ` keyboardSingleStep ` et ` keyboardPageStep ` contrôlent la distance sur laquelle le widget est déplacé ou redimensionné à chaque pression de touche. Lorsque la touche Maj est enfoncée, le déplacement s’effectue par pas de page ; dans le cas contraire, il s’effectue par pas simple.
Vous pouvez également changer de fenêtre active à l’aide du clavier. En appuyant simultanément sur les touches Ctrl et Tab, la sous-fenêtre suivante (selon la valeur actuelle de ` WindowOrder`) sera activée. En appuyant sur Ctrl, Maj et Tab, vous activerez la fenêtre précédente. Cela équivaut à appeler les fonctions ` activateNextSubWindow()` et ` activatePreviousSubWindow()`. Notez que ces raccourcis remplacent les raccourcis globaux, mais pas ceux de la fonction ` QMdiArea`.
Voir également QMdiArea.
Documentation sur les types de membres
enum QMdiSubWindow::SubWindowOption
flags QMdiSubWindow::SubWindowOptions
Cette énumération décrit les options permettant de personnaliser le comportement de QMdiSubWindow.
| Constante | Valeur | Description |
|---|---|---|
QMdiSubWindow::RubberBandResize | 0x4 | Si vous activez cette option, un contrôle « élastique » est utilisé pour représenter le contour de la sous-fenêtre, et l’utilisateur redimensionne ce contrôle plutôt que la sous-fenêtre elle-même. Par conséquent, la sous-fenêtre conserve sa position et sa taille d’origine jusqu’à ce que l’opération de redimensionnement soit terminée, moment auquel elle recevra un seul appel à ` QResizeEvent`. Par défaut, cette option est désactivée. |
QMdiSubWindow::RubberBandMove | 0x8 | Si vous activez cette option, un contrôle « élastique » est utilisé pour représenter le contour de la sous-fenêtre, et l’utilisateur déplace ce contrôle au lieu de la sous-fenêtre elle-même. Par conséquent, la sous-fenêtre reste à sa position d’origine jusqu’à ce que l’opération de déplacement soit terminée, moment auquel un message ` QMoveEvent ` est envoyé à la fenêtre. Par défaut, cette option est désactivée. |
Le type `SubWindowOptions` est un `typedef` pour ` QFlags<SubWindowOption>`. Il stocke une combinaison (ou) de valeurs `SubWindowOption`.
Documentation sur les propriétés
keyboardPageStep : int
Définit la distance sur laquelle un widget doit se déplacer ou le pourcentage de redimensionnement à appliquer lors de l'utilisation des touches de page du clavier.
En mode interactif au clavier, vous pouvez utiliser les touches fléchées et les touches de page pour déplacer ou redimensionner la fenêtre. Cette propriété contrôle les touches de page. Pour passer en mode interactif au clavier, il suffit généralement d'accéder au menu de la sous-fenêtre et de sélectionner « redimensionner » ou « déplacer ».
La valeur par défaut du pas des touches de page est de 20 pixels.
Fonctions d'accès :
| int | keyboardPageStep() const |
| void | setKeyboardPageStep(int step) |
Voir également keyboardSingleStep.
keyboardSingleStep : int
Définit la distance sur laquelle un widget doit se déplacer ou se redimensionner lors de l'utilisation des touches fléchées du clavier.
En mode interactif au clavier, vous pouvez utiliser les touches fléchées et les touches de page pour déplacer ou redimensionner la fenêtre. Cette propriété contrôle le comportement des touches fléchées. Pour passer en mode interactif au clavier, il suffit généralement d'accéder au menu de la sous-fenêtre et de sélectionner « Redimensionner » ou « Déplacer ».
La valeur par défaut du pas par pas au clavier est de 5 pixels.
Fonctions d'accès :
| int | keyboardSingleStep() const |
| void | setKeyboardSingleStep(int step) |
Voir également keyboardPageStep.
Documentation des fonctions membres
QMdiSubWindow::QMdiSubWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
Crée un nouveau widget QMdiSubWindow. Les arguments parent et flags sont transmis au constructeur de QWidget.
Au lieu d’utiliser addSubWindow(), il est également possible d’utiliser simplement setParent() lorsque vous ajoutez la sous-fenêtre à un QMdiArea.
Notez que seules les instances de ` QMdiSubWindow` peuvent être définies comme enfants d’un ` QMdiArea` ; vous ne pouvez pas, par exemple, écrire :
Voir également QMdiArea::addSubWindow().
[virtual noexcept] QMdiSubWindow::~QMdiSubWindow()
Supprime la sous-fenêtre.
Voir aussi QMdiArea::removeSubWindow().
[signal] void QMdiSubWindow::aboutToActivate()
QMdiSubWindow émet ce signal juste avant son activation. Une fois la sous-fenêtre activée, l’ QMdiArea qui la gère émettra également le signal subWindowActivated().
Voir également QMdiArea::subWindowActivated().
[override virtual protected] void QMdiSubWindow::changeEvent(QEvent *changeEvent)
Réimplémente : QWidget::changeEvent(QEvent *event).
[override virtual protected] void QMdiSubWindow::childEvent(QChildEvent *childEvent)
Réimplémente : QObject::childEvent(QChildEvent *event).
[override virtual protected] void QMdiSubWindow::closeEvent(QCloseEvent *closeEvent)
Réimplémente : QWidget::closeEvent(QCloseEvent *event).
[override virtual protected] void QMdiSubWindow::contextMenuEvent(QContextMenuEvent *contextMenuEvent)
Réimplémente : QWidget::contextMenuEvent(QContextMenuEvent *event).
[override virtual protected] bool QMdiSubWindow::event(QEvent *event)
Réimplémente : QWidget::event(QEvent *event).
[override virtual protected] bool QMdiSubWindow::eventFilter(QObject *object, QEvent *event)
Réimplémente : QObject::eventFilter(QObject *watched, QEvent *event).
[override virtual protected] void QMdiSubWindow::focusInEvent(QFocusEvent *focusInEvent)
Réimplémente : QWidget::focusInEvent(QFocusEvent *event).
[override virtual protected] void QMdiSubWindow::focusOutEvent(QFocusEvent *focusOutEvent)
Réimplémente : QWidget::focusOutEvent(QFocusEvent *event).
[override virtual protected] void QMdiSubWindow::hideEvent(QHideEvent *hideEvent)
Réimplémente : QWidget::hideEvent(QHideEvent *event).
bool QMdiSubWindow::isShaded() const
Renvoie « true » si cette fenêtre est masquée ; sinon, renvoie « false ».
Une fenêtre est masquée si elle est réduite de telle sorte que seule la barre de titre soit visible.
[override virtual protected] void QMdiSubWindow::keyPressEvent(QKeyEvent *keyEvent)
Réimplémente : QWidget::keyPressEvent(QKeyEvent *event).
[override virtual protected] void QMdiSubWindow::leaveEvent(QEvent *leaveEvent)
Réimplémente : QWidget::leaveEvent(QEvent *event).
QMdiArea *QMdiSubWindow::mdiArea() const
Renvoie la zone contenant cette sous-fenêtre, ou nullptr s'il n'y en a pas.
Voir aussi QMdiArea::addSubWindow().
[override virtual] QSize QMdiSubWindow::minimumSizeHint() const
Réimplémente une fonction d'accès pour la propriété : QWidget::minimumSizeHint.
[override virtual protected] void QMdiSubWindow::mouseDoubleClickEvent(QMouseEvent *mouseEvent)
Réimplémente : QWidget::mouseDoubleClickEvent(QMouseEvent *event).
[override virtual protected] void QMdiSubWindow::mouseMoveEvent(QMouseEvent *mouseEvent)
Réimplémente : QWidget::mouseMoveEvent(QMouseEvent *event).
[override virtual protected] void QMdiSubWindow::mousePressEvent(QMouseEvent *mouseEvent)
Réimplémente : QWidget::mousePressEvent(QMouseEvent *event).
[override virtual protected] void QMdiSubWindow::mouseReleaseEvent(QMouseEvent *mouseEvent)
Réimplémente : QWidget::mouseReleaseEvent(QMouseEvent *event).
[override virtual protected] void QMdiSubWindow::moveEvent(QMoveEvent *moveEvent)
Réimplémente : QWidget::moveEvent(QMoveEvent *event).
[override virtual protected] void QMdiSubWindow::paintEvent(QPaintEvent *paintEvent)
Réimplémente : QWidget::paintEvent(QPaintEvent *event).
[override virtual protected] void QMdiSubWindow::resizeEvent(QResizeEvent *resizeEvent)
Réimplémente : QWidget::resizeEvent(QResizeEvent *event).
Avertissement : lors de l'agrandissement ou du rétablissement d'une sous-fenêtre, l'appel à cette fonction qui en résulte peut recevoir un QResizeEvent::oldSize() non valide.
void QMdiSubWindow::setOption(QMdiSubWindow::SubWindowOption option, bool on = true)
Si la valeur de ` on ` est `true`, l'option ` option ` est activée dans la sous-fenêtre ; dans le cas contraire, elle est désactivée. Consultez SubWindowOption pour connaître l'effet de chaque option.
Voir également SubWindowOption et testOption().
void QMdiSubWindow::setSystemMenu(QMenu *systemMenu)
Définit « systemMenu » comme menu système actuel pour cette sous-fenêtre.
Par défaut, chaque « QMdiSubWindow » dispose d’un menu système standard.
Les QActions du menu système créé par ` QMdiSubWindow ` seront automatiquement mises à jour en fonction de l'état actuel de la fenêtre ; par exemple, l'action de réduction sera désactivée une fois la fenêtre réduite.
Les QActions ajoutées par l’utilisateur ne sont pas mises à jour par QMdiSubWindow.
QMdiSubWindow systemMenu prend possession de la fenêtre ; vous n’avez pas besoin de la supprimer. Tous les menus existants seront supprimés.
Voir également systemMenu() et showSystemMenu().
void QMdiSubWindow::setWidget(QWidget *widget)
Définit widget comme widget interne de cette sous-fenêtre. Le widget interne s'affiche au centre de la sous-fenêtre, sous la barre de titre.
QMdiSubWindow Prend temporairement possession de ` widget` ; vous n’avez pas besoin de le supprimer. Tout widget interne existant sera supprimé et rattaché à la fenêtre racine.
Voir également widget().
[override virtual protected] void QMdiSubWindow::showEvent(QShowEvent *showEvent)
Réimplémente : QWidget::showEvent(QShowEvent *event).
[slot] void QMdiSubWindow::showShaded()
L'appel de cette fonction fait passer la sous-fenêtre en mode ombré. Lorsque la sous-fenêtre est ombrée, seule la barre de titre est visible.
Bien que le masquage ne soit pas pris en charge par tous les styles, cette fonction affichera tout de même la sous-fenêtre comme masquée, que le masquage soit pris en charge ou non. Cependant, lorsqu'elle est utilisée avec des styles ne prenant pas en charge le masquage, l'utilisateur ne pourra pas quitter le mode masqué via l'interface utilisateur (par exemple, à l'aide d'un bouton de masquage dans la barre de titre).
Voir également isShaded().
[slot] void QMdiSubWindow::showSystemMenu()
Affiche le menu système sous l'icône du menu système dans la barre de titre.
Voir également setSystemMenu() et systemMenu().
[override virtual] QSize QMdiSubWindow::sizeHint() const
Réimplémente une fonction d'accès pour la propriété : QWidget::sizeHint.
QMenu *QMdiSubWindow::systemMenu() const
Renvoie un pointeur vers le menu système actuel, ou zéro si aucun menu système n'est défini. La fonction ` QMdiSubWindow ` fournit un menu système par défaut, mais vous pouvez également définir le menu à l'aide de la fonction ` setSystemMenu()`.
Voir également setSystemMenu() et showSystemMenu().
bool QMdiSubWindow::testOption(QMdiSubWindow::SubWindowOption option) const
Renvoie « true » si « option » est activé ; sinon, renvoie « false ».
Voir également SubWindowOption et setOption().
[override virtual protected] void QMdiSubWindow::timerEvent(QTimerEvent *timerEvent)
Réimplémente : ` QObject::timerEvent(QTimerEvent *event)`.
QWidget *QMdiSubWindow::widget() const
Renvoie le widget interne actuel.
Voir aussi setWidget().
[signal] void QMdiSubWindow::windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState)
QMdiSubWindow émet ce signal lorsque l'état de la fenêtre change. ` oldState ` correspond à l'état de la fenêtre avant le changement, et ` newState ` correspond au nouvel état actuel.
© 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.