QMdiSubWindow Class
Die Klasse „QMdiSubWindow“ stellt eine Unterfensterklasse für „ QMdiArea “ bereit. Mehr...
| Header: | #include <QMdiSubWindow> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Erbt von: | QWidget |
Öffentliche Typen
| enum | SubWindowOption { RubberBandResize, RubberBandMove } |
| flags | SubWindowOptions |
Eigenschaften
- keyboardPageStep : int
- keyboardSingleStep : int
Öffentliche Funktionen
| 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 |
Neu implementierte öffentliche Funktionen
| virtual QSize | minimumSizeHint() const override |
| virtual QSize | sizeHint() const override |
Öffentliche Slots
| void | showShaded() |
| void | showSystemMenu() |
Signale
| void | aboutToActivate() |
| void | windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState) |
Neu implementierte geschützte Funktionen
| 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 |
Ausführliche Beschreibung
QMdiSubWindow stellt ein Fenster der obersten Ebene in einem „ QMdiArea “ dar und besteht aus einer Titelleiste mit Fensterdekorationen, einem internen Widget sowie (je nach aktuellem Stil) einem Fensterrahmen und einem Größengriff. QMdiSubWindow verfügt über ein eigenes Layout, das aus der Titelleiste und einem zentralen Bereich für das interne Widget besteht.

Die gängigste Methode zum Erstellen eines QMdiSubWindow ist der Aufruf von ` QMdiArea::addSubWindow()` mit dem internen Widget als Argument. Sie können ein Unterfenster auch selbst erstellen und ein internes Widget festlegen, indem Sie ` setWidget()` aufrufen.
Bei der Programmierung mit Unterfenstern verwenden Sie dieselbe API wie bei regulären Fenstern der obersten Ebene (z. B. können Sie Funktionen wie ` show()`, ` hide()`, ` showMaximized()` und ` setWindowTitle()` aufrufen).
Behandlung von Unterfenstern
QMdiSubWindow unterstützt zudem spezifisches Verhalten für Unterfenster in einem MDI-Bereich.
Standardmäßig ist jedes QMdiSubWindow beim Verschieben innerhalb des Ansichtsbereichs des MDI-Bereichs sichtbar; es ist jedoch auch möglich, ein transparentes Verhalten beim Verschieben und Ändern der Fenstergröße festzulegen, bei dem während dieser Vorgänge nur der Umriss eines Unterfensters aktualisiert wird. Die Funktion ` setOption()` wird verwendet, um dieses Verhalten zu aktivieren.
Die Funktion ` isShaded()` erkennt, ob sich das Unterfenster derzeit im „Shaded“-Modus befindet (d. h., das Fenster ist so minimiert, dass nur die Titelleiste sichtbar ist). Um in den „Shaded“-Modus zu wechseln, rufen Sie ` showShaded()` auf. QMdiSubWindow sendet das Signal „ windowStateChanged()“ aus, sobald sich der Fensterzustand geändert hat (z. B. wenn das Fenster minimiert oder wiederhergestellt wird). Außerdem sendet es das Signal „ aboutToActivate()“ aus, bevor es aktiviert wird.
Im tastaturinteraktiven Modus werden die Fenster über die Tastatur verschoben und in der Größe angepasst. Sie können diesen Modus über das Systemmenü des Fensters aktivieren. Die Eigenschaften „ keyboardSingleStep “ und „ keyboardPageStep “ steuern den Abstand, um den das Widget bei jedem Tastendruck verschoben oder in der Größe angepasst wird. Bei gedrückter Umschalttaste erfolgt die Verschiebung in Seitenschritten, andernfalls in Einzelschritten.
Sie können das aktive Fenster auch über die Tastatur wechseln. Durch gleichzeitiges Drücken der Strg- und Tab-Tasten wird das nächste Unterfenster (unter Verwendung des aktuellen „ WindowOrder “) aktiviert. Durch Drücken von Strg, Umschalt und Tab aktivieren Sie das vorherige Fenster. Dies entspricht dem Aufruf von „ activateNextSubWindow()“ und „ activatePreviousSubWindow()“. Beachten Sie, dass diese Tastenkombinationen globale Tastenkombinationen überschreiben, nicht jedoch die Tastenkombinationen von „ QMdiArea“.
Siehe auch QMdiArea.
Dokumentation zu Mitgliedstypen
enum QMdiSubWindow::SubWindowOption
flags QMdiSubWindow::SubWindowOptions
Diese Enumeration beschreibt Optionen zur Anpassung des Verhaltens von QMdiSubWindow.
| Konstante | Wert | Beschreibung |
|---|---|---|
QMdiSubWindow::RubberBandResize | 0x4 | Wenn Sie diese Option aktivieren, wird ein „Rubber-Band“-Steuerelement verwendet, um den Umriss des Unterfensters darzustellen, und der Benutzer passt dessen Größe anstelle der des Unterfensters selbst an. Dadurch behält das Unterfenster seine ursprüngliche Position und Größe bei, bis der Größenänderungsvorgang abgeschlossen ist; zu diesem Zeitpunkt erhält es einen einzelnen ` QResizeEvent`-Aufruf. Standardmäßig ist diese Option deaktiviert. |
QMdiSubWindow::RubberBandMove | 0x8 | Wenn Sie diese Option aktivieren, wird ein „Rubberband“-Steuerelement verwendet, um den Umriss des Unterfensters darzustellen, und der Benutzer verschiebt dieses anstelle des Unterfensters selbst. Infolgedessen verbleibt das Unterfenster an seiner ursprünglichen Position, bis der Verschiebungsvorgang abgeschlossen ist; zu diesem Zeitpunkt wird ein „ QMoveEvent “ an das Fenster gesendet. Standardmäßig ist diese Option deaktiviert. |
Der Typ `SubWindowOptions` ist ein `typedef` für ` QFlags<SubWindowOption>`. Er speichert eine ODER-Kombination von `SubWindowOption`-Werten.
Dokumentation zur Eigenschaft
keyboardPageStep : int
Legt fest, wie weit sich ein Widget bewegen oder in der Größe ändern soll, wenn die Seitentasten der Tastatur verwendet werden.
Im Tastatur-Interaktionsmodus können Sie die Pfeiltasten und Seitentasten verwenden, um das Fenster entweder zu verschieben oder seine Größe zu ändern. Diese Eigenschaft steuert die Seitentasten. Der übliche Weg, in den Tastatur-Interaktionsmodus zu gelangen, besteht darin, das Unterfenster-Menü aufzurufen und dort entweder „Größe ändern“ oder „Verschieben“ auszuwählen.
Der Standardwert für den Schritt der Bildlauf-Tasten beträgt 20 Pixel.
Zugriffsfunktionen:
| int | keyboardPageStep() const |
| void | setKeyboardPageStep(int step) |
Siehe auch „ keyboardSingleStep “.
keyboardSingleStep : int
Legt fest, wie weit sich ein Widget bei Verwendung der Pfeiltasten der Tastatur verschieben oder in der Größe anpassen soll.
Im Tastatur-Interaktionsmodus können Sie die Pfeiltasten und Seitentasten verwenden, um das Fenster entweder zu verschieben oder seine Größe zu ändern. Diese Eigenschaft steuert die Pfeiltasten. Der übliche Weg, in den Tastatur-Interaktionsmodus zu gelangen, besteht darin, das Unterfenster-Menü aufzurufen und dort entweder „Größe ändern“ oder „Verschieben“ auszuwählen.
Der Standardwert für den Schritt pro Tastendruck beträgt 5 Pixel.
Zugriffsfunktionen:
| int | keyboardSingleStep() const |
| void | setKeyboardSingleStep(int step) |
Siehe auch „ keyboardPageStep “.
Dokumentation zu den Mitgliedsfunktionen
QMdiSubWindow::QMdiSubWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
Erstellt ein neues QMdiSubWindow-Widget. Die Argumente „ parent “ und „ flags “ werden an den Konstruktor von „ QWidget “ übergeben.
Anstelle von addSubWindow() kann man auch einfach setParent() verwenden, wenn man das Unterfenster zu einem QMdiArea hinzufügt.
Beachten Sie, dass nur ` QMdiSubWindow`-Objekte als untergeordnete Elemente von ` QMdiArea` festgelegt werden können; Sie können beispielsweise nicht schreiben:
Siehe auch ` QMdiArea::addSubWindow()`.
[virtual noexcept] QMdiSubWindow::~QMdiSubWindow()
Löscht das Unterfenster.
Siehe auch „ QMdiArea::removeSubWindow()“.
[signal] void QMdiSubWindow::aboutToActivate()
QMdiSubWindow sendet dieses Signal unmittelbar vor der Aktivierung des Unterfensters. Nachdem das Unterfenster aktiviert wurde, sendet auch der „ QMdiArea “, der das Unterfenster verwaltet, das Signal „ subWindowActivated()“.
Siehe auch QMdiArea::subWindowActivated().
[override virtual protected] void QMdiSubWindow::changeEvent(QEvent *changeEvent)
Umsetzt: ` QWidget::changeEvent(QEvent *event)`.
[override virtual protected] void QMdiSubWindow::childEvent(QChildEvent *childEvent)
Implementiert: ` QObject::childEvent(QChildEvent *event)`.
[override virtual protected] void QMdiSubWindow::closeEvent(QCloseEvent *closeEvent)
Umsetzt: ` QWidget::closeEvent(QCloseEvent *event)`.
[override virtual protected] void QMdiSubWindow::contextMenuEvent(QContextMenuEvent *contextMenuEvent)
Implementiert: ` QWidget::contextMenuEvent` (`QContextMenuEvent *event`).
[override virtual protected] bool QMdiSubWindow::event(QEvent *event)
Umsetzt: ` QWidget::event(QEvent *event)`.
[override virtual protected] bool QMdiSubWindow::eventFilter(QObject *object, QEvent *event)
Implementiert: ` QObject::eventFilter` (`QObject *watched, QEvent *event`).
[override virtual protected] void QMdiSubWindow::focusInEvent(QFocusEvent *focusInEvent)
Umsetzt: ` QWidget::focusInEvent(QFocusEvent *event)`.
[override virtual protected] void QMdiSubWindow::focusOutEvent(QFocusEvent *focusOutEvent)
Implementiert: ` QWidget::focusOutEvent(QFocusEvent *event)`.
[override virtual protected] void QMdiSubWindow::hideEvent(QHideEvent *hideEvent)
Implementiert: ` QWidget::hideEvent(QHideEvent *event)`.
bool QMdiSubWindow::isShaded() const
Gibt „ true “ zurück, wenn dieses Fenster ausgeblendet ist; andernfalls wird „ false “ zurückgegeben.
Ein Fenster ist ausgeblendet, wenn es so minimiert ist, dass nur die Titelleiste sichtbar ist.
[override virtual protected] void QMdiSubWindow::keyPressEvent(QKeyEvent *keyEvent)
Implementiert: ` QWidget::keyPressEvent(QKeyEvent *event)`.
[override virtual protected] void QMdiSubWindow::leaveEvent(QEvent *leaveEvent)
Umsetzt: ` QWidget::leaveEvent(QEvent *event)`.
QMdiArea *QMdiSubWindow::mdiArea() const
Gibt den Bereich zurück, der dieses Unterfenster enthält, oder „ nullptr “, falls kein solcher Bereich vorhanden ist.
Siehe auch QMdiArea::addSubWindow().
[override virtual] QSize QMdiSubWindow::minimumSizeHint() const
Implementiert eine Zugriffsfunktion für die Eigenschaft „ QWidget::minimumSizeHint “ neu.
[override virtual protected] void QMdiSubWindow::mouseDoubleClickEvent(QMouseEvent *mouseEvent)
Implementiert: ` QWidget::mouseDoubleClickEvent` (`QMouseEvent *event`).
[override virtual protected] void QMdiSubWindow::mouseMoveEvent(QMouseEvent *mouseEvent)
Implementiert: ` QWidget::mouseMoveEvent` (`QMouseEvent *event`).
[override virtual protected] void QMdiSubWindow::mousePressEvent(QMouseEvent *mouseEvent)
Implementiert neu: ` QWidget::mousePressEvent` (`QMouseEvent *event`).
[override virtual protected] void QMdiSubWindow::mouseReleaseEvent(QMouseEvent *mouseEvent)
Implementiert: ` QWidget::mouseReleaseEvent` (`QMouseEvent *event`).
[override virtual protected] void QMdiSubWindow::moveEvent(QMoveEvent *moveEvent)
Implementiert: ` QWidget::moveEvent(QMoveEvent *event)`.
[override virtual protected] void QMdiSubWindow::paintEvent(QPaintEvent *paintEvent)
Umsetzt: ` QWidget::paintEvent` (`QPaintEvent *event`).
[override virtual protected] void QMdiSubWindow::resizeEvent(QResizeEvent *resizeEvent)
Implementiert: ` QWidget::resizeEvent(QResizeEvent *event)`.
Warnung: Beim Maximieren oder Wiederherstellen eines Unterfensters kann der daraus resultierende Aufruf dieser Funktion einen ungültigen QResizeEvent::oldSize() enthalten.
void QMdiSubWindow::setOption(QMdiSubWindow::SubWindowOption option, bool on = true)
Wenn „ on “ auf „true“ gesetzt ist, ist „ option “ im Unterfenster aktiviert; andernfalls ist es deaktiviert. Informationen zu den Auswirkungen der einzelnen Optionen finden Sie unter SubWindowOption.
Siehe auch „ SubWindowOption “ und „ testOption()“.
void QMdiSubWindow::setSystemMenu(QMenu *systemMenu)
Legt „ systemMenu “ als aktuelles Systemmenü für dieses Unterfenster fest.
Standardmäßig verfügt jedes „ QMdiSubWindow “ über ein Standard-Systemmenü.
Die von „ QMdiSubWindow “ erstellten QActions für das Systemmenü werden automatisch entsprechend dem aktuellen Fensterzustand aktualisiert; so wird beispielsweise die Aktion „Minimieren“ deaktiviert, sobald das Fenster minimiert wurde.
Vom Benutzer hinzugefügte QActions werden von „ QMdiSubWindow “ nicht aktualisiert.
QMdiSubWindow systemMenu übernimmt die Eigentumsrechte; Sie müssen es nicht löschen. Alle vorhandenen Menüs werden gelöscht.
Siehe auch „ systemMenu()“ und „ showSystemMenu()“.
void QMdiSubWindow::setWidget(QWidget *widget)
Legt „ widget “ als internes Widget dieses Unterfensters fest. Das interne Widget wird in der Mitte des Unterfensters unterhalb der Titelleiste angezeigt.
QMdiSubWindow Übernimmt vorübergehend die Verantwortung für ` widget`; Sie müssen es nicht löschen. Ein eventuell vorhandenes internes Widget wird entfernt und dem Root-Fenster neu zugeordnet.
Siehe auch widget().
[override virtual protected] void QMdiSubWindow::showEvent(QShowEvent *showEvent)
Implementiert: ` QWidget::showEvent(QShowEvent *event)`.
[slot] void QMdiSubWindow::showShaded()
Durch den Aufruf dieser Funktion wechselt das Unterfenster in den ausgeblendeten Modus. Ist das Unterfenster ausgeblendet, ist nur die Titelleiste sichtbar.
Obwohl der verdeckte Modus nicht von allen Stilen unterstützt wird, zeigt diese Funktion das Unterfenster dennoch als verdeckt an, unabhängig davon, ob der verdeckte Modus unterstützt wird. Bei Verwendung mit Stilen, die den verdeckten Modus nicht unterstützen, kann der Benutzer jedoch nicht über die Benutzeroberfläche (z. B. über eine Schaltfläche in der Titelleiste) aus dem verdeckten Modus zurückkehren.
Siehe auch „ isShaded“ ().
[slot] void QMdiSubWindow::showSystemMenu()
Zeigt das Systemmenü unterhalb des Systemmenü-Symbols in der Titelleiste an.
Siehe auch setSystemMenu() und systemMenu().
[override virtual] QSize QMdiSubWindow::sizeHint() const
Implementiert eine Zugriffsfunktion für die Eigenschaft „ QWidget::sizeHint “ neu.
QMenu *QMdiSubWindow::systemMenu() const
Gibt einen Zeiger auf das aktuelle Systemmenü zurück oder Null, wenn kein Systemmenü festgelegt ist. „ QMdiSubWindow “ stellt ein Standard-Systemmenü bereit, Sie können das Menü jedoch auch mit „ setSystemMenu()“ festlegen.
Siehe auch setSystemMenu() und showSystemMenu().
bool QMdiSubWindow::testOption(QMdiSubWindow::SubWindowOption option) const
Gibt „ true “ zurück, wenn „ option “ aktiviert ist; andernfalls wird „ false “ zurückgegeben.
Siehe auch „ SubWindowOption “ und „ setOption()“.
[override virtual protected] void QMdiSubWindow::timerEvent(QTimerEvent *timerEvent)
Implementiert: ` QObject::timerEvent(QTimerEvent *event)`.
QWidget *QMdiSubWindow::widget() const
Gibt das aktuelle interne Widget zurück.
Siehe auch „ setWidget()“.
[signal] void QMdiSubWindow::windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState)
QMdiSubWindow gibt dieses Signal aus, nachdem sich der Fensterzustand geändert hat. ` oldState ` ist der Fensterzustand vor der Änderung, und ` newState ` ist der neue, aktuelle Zustand.
© 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.