QMdiSubWindow Class
La classe QMdiSubWindow fournit une classe de sous-fenêtre pour QMdiArea. Plus...
| En-tête : | #include <QMdiSubWindow> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Widgets)target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake : | QT += widgets |
| Héritages : | 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 |
Emplacements 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 un site QMdiArea, et se compose d'une barre de titre avec des décorations de fenêtre, d'un widget interne et (en fonction du style actuel) d'un cadre de fenêtre et d'une poignée de taille. QMdiSubWindow a sa propre disposition, qui consiste en une barre de titre et une zone centrale pour le widget interne.

La manière la plus courante de construire une QMdiSubWindow est d'appeler QMdiArea::addSubWindow() avec le widget interne comme argument. Vous pouvez également créer une sous-fenêtre vous-même et définir un widget interne en appelant setWidget().
Pour programmer avec les sous-fenêtres, vous utilisez la même API que pour les fenêtres de niveau supérieur (par exemple, vous pouvez appeler des fonctions telles que show(), hide(), showMaximized() et setWindowTitle()).
Gestion des sous-fenêtres
QMdiSubWindow prend également en charge le comportement spécifique des sous-fenêtres dans une zone MDI.
Par défaut, chaque QMdiSubWindow est visible à l'intérieur de la fenêtre de la zone MDI lorsqu'elle est déplacée, mais il est également possible de spécifier un comportement transparent de déplacement et de redimensionnement de la fenêtre, où seul le contour d'une sous-fenêtre est mis à jour au cours 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 ombrée (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 a changé (par exemple, lorsque la fenêtre est réduite ou restaurée). Il émet également le signal aboutToActivate() avant d'être activé.
En mode clavier interactif, les fenêtres sont déplacées et redimensionnées à l'aide du clavier. Vous pouvez accéder à ce mode par le menu système de la fenêtre. Les propriétés keyboardSingleStep et keyboardPageStep contrôlent la distance à laquelle le widget est déplacé ou redimensionné à chaque pression de touche. Lorsque la touche Maj est enfoncée, le pas de page est utilisé ; sinon, le pas simple est utilisé.
Vous pouvez également modifier la fenêtre active à l'aide du clavier. En appuyant simultanément sur les touches contrôle et tabulation, la sous-fenêtre suivante (en utilisant le site WindowOrder) est activée. En appuyant sur les touches control, shift et tab, vous activerez la fenêtre précédente. Cela équivaut à appeler activateNextSubWindow() et activatePreviousSubWindow(). Notez que ces raccourcis remplacent les raccourcis globaux, mais pas les raccourcis de QMdiArea.
Voir également QMdiArea.
Documentation sur les types de membres
enum QMdiSubWindow::SubWindowOption
flags QMdiSubWindow::SubWindowOptions
Cette énumération décrit les options qui personnalisent le comportement de QMdiSubWindow.
| Constante | Valeur | Description de l'option |
|---|---|---|
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 le redimensionne au lieu de 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 reçoit un simple QResizeEvent. Cette option est désactivée par défaut. |
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 le déplace au lieu de la sous-fenêtre elle-même. Par conséquent, la sous-fenêtre reste dans sa position d'origine jusqu'à ce que l'opération de déplacement soit terminée, moment auquel une adresse QMoveEvent est envoyée à 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 à laquelle un widget doit se déplacer ou se redimensionner lorsque l'on utilise les touches de page du clavier.
En mode interactif, 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. La façon la plus courante d'entrer dans le mode interactif au clavier est 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 de page du clavier est de 20 pixels.
Fonctions d'accès :
| int | keyboardPageStep() const |
| void | setKeyboardPageStep(int step) |
Voir également keyboardSingleStep.
keyboardSingleStep : int
définit la distance à laquelle un widget doit se déplacer ou se redimensionner lorsque l'on utilise les touches fléchées du clavier.
En mode clavier interactif, 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 fléchées. La façon la plus courante d'entrer dans le mode interactif au clavier est d'accéder au menu de la sous-fenêtre et de sélectionner "redimensionner" ou "déplacer".
La valeur par défaut de l'étape unique du clavier est de 5 pixels.
Fonctions d'accès :
| int | keyboardSingleStep() const |
| void | setKeyboardSingleStep(int step) |
Voir également keyboardPageStep.
Documentation sur les fonctions membres
QMdiSubWindow::QMdiSubWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
Construit 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 setParent() lorsque vous ajoutez la sous-fenêtre à une QMdiArea.
Notez que seuls les QMdiSubWindowpeuvent être définis comme enfants de QMdiArea; vous ne pouvez pas, par exemple, écrire :
Voir aussi QMdiArea::addSubWindow().
[virtual noexcept] QMdiSubWindow::~QMdiSubWindow()
Détruit la sous-fenêtre.
Voir également QMdiArea::removeSubWindow().
[signal] void QMdiSubWindow::aboutToActivate()
QMdiSubWindow émet ce signal immédiatement avant d'être activée. Une fois la sous-fenêtre activée, le site QMdiArea qui gère la sous-fenêtre émet é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 ombrée ; sinon, renvoie false.
Une fenêtre est ombrée si elle est réduite de manière à ce 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 également QMdiArea::addSubWindow().
[override virtual] QSize QMdiSubWindow::minimumSizeHint() const
Réimplémente une fonction d'accès à 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).
Attention : Lors de la maximisation ou de la restauration d'une sous-fenêtre, l'appel à cette fonction peut avoir un QResizeEvent::oldSize() invalide.
void QMdiSubWindow::setOption(QMdiSubWindow::SubWindowOption option, bool on = true)
Si on est vrai, option est activé sur la sous-fenêtre ; sinon, il est désactivé. Voir SubWindowOption pour connaître l'effet de chaque option.
Voir également SubWindowOption et testOption().
void QMdiSubWindow::setSystemMenu(QMenu *systemMenu)
Définit systemMenu comme le menu système actuel pour cette sous-fenêtre.
Par défaut, chaque site QMdiSubWindow dispose d'un menu système standard.
Les actions Q 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 minimisation sera désactivée lorsque la fenêtre sera réduite.
Les actions ajoutées par l'utilisateur ne sont pas mises à jour par QMdiSubWindow.
QMdiSubWindow prend possession de systemMenu; vous ne devez pas l'effacer. 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 est affiché au centre de la sous-fenêtre, sous la barre de titre.
QMdiSubWindow prend temporairement possession de widget; vous n'avez pas à le supprimer. Tout widget interne existant sera supprimé et renvoyé à la fenêtre racine.
Voir aussi 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 l'ombrage ne soit pas pris en charge par tous les styles, cette fonction affichera toujours la sous-fenêtre comme ombrée, que la prise en charge de l'ombrage soit disponible ou non. Toutefois, lorsqu'elle est utilisée avec des styles ne prenant pas en charge l'ombrage, l'utilisateur ne pourra pas revenir au mode ombré par l'intermédiaire de l'interface utilisateur (par exemple, au moyen d'un bouton d'ombrage 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 aussi setSystemMenu() et systemMenu().
[override virtual] QSize QMdiSubWindow::sizeHint() const
Réimplémente une fonction d'accès à la propriété : QWidget::sizeHint.
QMenu *QMdiSubWindow::systemMenu() const
Renvoie un pointeur sur le menu système actuel, ou zéro si aucun menu système n'est défini. QMdiSubWindow fournit un menu système par défaut, mais vous pouvez également définir le menu avec setSystemMenu().
Voir aussi setSystemMenu() et showSystemMenu().
bool QMdiSubWindow::testOption(QMdiSubWindow::SubWindowOption option) const
Renvoie true si option est activé ; sinon, renvoie false.
Voir aussi 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 après le changement d'état de la fenêtre. oldState est l'état de la fenêtre avant son changement, et newState est le 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.