Auf dieser Seite

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

Ö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.

MDI-Fenster mit einer Titelleiste und einem internen Widget

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.

KonstanteWertBeschreibung
QMdiSubWindow::RubberBandResize0x4Wenn 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::RubberBandMove0x8Wenn 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:

//bad code
QMdiArea mdiArea;
QTextEdit editor(&mdiArea); // invalid child widget

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.