QMdiSubWindow Class

Die Klasse QMdiSubWindow bietet eine Subwindow-Klasse für QMdiArea. Mehr...

Kopfzeile: #include <QMdiSubWindow>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Vererbt: 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

Reimplementierte ö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)

Reimplementierte 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

Detaillierte Beschreibung

QMdiSubWindow stellt ein Fenster der obersten Ebene in einem QMdiArea dar und besteht aus einer Titelleiste mit Fensterdekorationen, einem internen Widget und (abhängig vom aktuellen Stil) einem Fensterrahmen und einem Größengriff. QMdiSubWindow hat sein eigenes Layout, das aus der Titelleiste und einem zentralen Bereich für das interne Widget besteht.

Die gebräuchlichste Art, ein QMdiSubWindow zu erstellen, ist der Aufruf von QMdiArea::addSubWindow() mit dem internen Widget als Argument. Sie können auch selbst ein Teilfenster 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 auch das spezifische Verhalten von Unterfenstern in einem MDI-Bereich.

Standardmäßig ist jedes QMdiSubWindow innerhalb des Ansichtsfensters des MDI-Bereichs sichtbar, wenn es verschoben wird. Es ist jedoch auch möglich, ein transparentes Verhalten für die Verschiebung und Größenänderung von Fenstern festzulegen, bei dem nur der Umriss eines Subfensters während dieser Vorgänge aktualisiert wird. Die Funktion setOption() wird verwendet, um dieses Verhalten zu aktivieren.

Die Funktion isShaded() erkennt, ob das Teilfenster derzeit schattiert ist (d. h., das Fenster ist zusammengeklappt, so dass nur die Titelleiste sichtbar ist). Um den schattierten Modus zu aktivieren, rufen Sie showShaded() auf. QMdiSubWindow gibt das Signal windowStateChanged() aus, wenn sich der Zustand des Fensters geändert hat (z. B. wenn das Fenster minimiert oder wiederhergestellt wird). Es sendet auch aboutToActivate(), bevor es aktiviert wird.

Im tastatur-interaktiven Modus werden die Fenster mit der Tastatur verschoben und in der Größe verändert. Sie können diesen Modus über das Systemmenü des Fensters aufrufen. Die Eigenschaften keyboardSingleStep und keyboardPageStep steuern, wie weit das Widget bei jedem Tastendruck verschoben oder in der Größe verändert wird. Wenn die Umschalttaste nach unten gedrückt wird, wird der Seitenschritt verwendet, andernfalls wird der Einzelschritt verwendet.

Sie können das aktive Fenster auch über die Tastatur wechseln. Durch gleichzeitiges Drücken der Strg- und der Tabulatortaste wird das nächste (unter Verwendung des aktuellen WindowOrder) Unterfenster aktiviert. Wenn Sie die Strg-, Umschalt- und Tabulatortaste drücken, wird das vorherige Fenster aktiviert. Dies ist gleichbedeutend mit dem Aufruf von activateNextSubWindow() und activatePreviousSubWindow(). Beachten Sie, dass diese Tastenkombinationen die globalen Tastenkombinationen außer Kraft setzen, nicht aber die von QMdiArea.

Siehe auch QMdiArea.

Dokumentation der Mitgliedstypen

enum QMdiSubWindow::SubWindowOption
flags QMdiSubWindow::SubWindowOptions

Diese Aufzählung beschreibt Optionen, mit denen das Verhalten von QMdiSubWindow angepasst werden kann.

KonstanteWertBeschreibung
QMdiSubWindow::RubberBandResize0x4Wenn Sie diese Option aktivieren, wird ein Gummiband-Steuerelement verwendet, um den Umriss des Teilfensters darzustellen, und der Benutzer ändert dessen Größe anstelle des Teilfensters selbst. Das Ergebnis ist, dass das Teilfenster seine ursprüngliche Position und Größe beibehält, bis der Größenänderungsvorgang abgeschlossen ist. Zu diesem Zeitpunkt erhält es eine einzelne QResizeEvent. Standardmäßig ist diese Option deaktiviert.
QMdiSubWindow::RubberBandMove0x8Wenn Sie diese Option aktivieren, wird ein Gummiband-Steuerelement verwendet, um den Umriss des Teilfensters darzustellen, und der Benutzer bewegt dieses anstelle des Teilfensters selbst. Das Ergebnis ist, dass das Teilfenster in seiner ursprünglichen Position bleibt, bis der Verschiebevorgang abgeschlossen ist. Zu diesem Zeitpunkt wird eine 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 der Eigenschaft

keyboardPageStep : int

legt fest, wie weit ein Widget bei Verwendung der Seitentasten der Tastatur verschoben oder in der Größe verändert werden soll.

Im tastaturinteraktiven Modus können Sie die Pfeil- und Seitentasten verwenden, um das Fenster zu verschieben oder in der Größe zu verändern. Diese Eigenschaft steuert die Seitentasten. Der übliche Weg, um in den interaktiven Tastaturmodus zu gelangen, besteht darin, das Unterfenstermenü aufzurufen und entweder "Größe ändern" oder "Verschieben" zu wählen.

Der Standardwert für den Seitenschritt der Tastatur ist 20 Pixel.

Zugriffsfunktionen:

int keyboardPageStep() const
void setKeyboardPageStep(int step)

Siehe auch keyboardSingleStep.

keyboardSingleStep : int

legt fest, wie weit ein Widget bei Verwendung der Pfeiltasten der Tastatur verschoben oder in der Größe verändert werden soll.

Im tastaturinteraktiven Modus können Sie die Pfeil- und Seitentasten zum Verschieben oder Ändern der Größe des Fensters verwenden. Diese Eigenschaft steuert die Pfeiltasten. Der übliche Weg, um in den interaktiven Tastaturmodus zu gelangen, besteht darin, das Unterfenstermenü aufzurufen und entweder "Größe ändern" oder "Verschieben" zu wählen.

Der Standardwert für den Tastatur-Einzelschritt ist 5 Pixel.

Zugriffsfunktionen:

int keyboardSingleStep() const
void setKeyboardSingleStep(int step)

Siehe auch keyboardPageStep.

Dokumentation der Mitgliedsfunktionen

QMdiSubWindow::QMdiSubWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())

Konstruiert ein neues QMdiSubWindow-Widget. Die Argumente parent und flags werden an den Konstruktor von QWidget übergeben.

Anstatt addSubWindow() zu verwenden, können Sie auch einfach setParent() verwenden, wenn Sie das Subfenster zu einem QMdiArea hinzufügen.

Beachten Sie, dass nur QMdiSubWindows als Kinder von QMdiArea gesetzt werden können; Sie können z.B. nicht schreiben:

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

Siehe auch QMdiArea::addSubWindow().

[virtual noexcept] QMdiSubWindow::~QMdiSubWindow()

Zerstört das Teilfenster.

Siehe auch QMdiArea::removeSubWindow().

[signal] void QMdiSubWindow::aboutToActivate()

QMdiSubWindow sendet dieses Signal unmittelbar vor seiner Aktivierung. Nach der Aktivierung des Teilfensters sendet das QMdiArea, das das Teilfenster verwaltet, ebenfalls das Signal subWindowActivated().

Siehe auch QMdiArea::subWindowActivated().

[override virtual protected] void QMdiSubWindow::changeEvent(QEvent *changeEvent)

Reimplements: QWidget::changeEvent(QEvent *Event).

[override virtual protected] void QMdiSubWindow::childEvent(QChildEvent *childEvent)

Reimplements: QObject::childEvent(QChildEvent *event).

[override virtual protected] void QMdiSubWindow::closeEvent(QCloseEvent *closeEvent)

Reimplements: QWidget::closeEvent(QCloseEvent *event).

[override virtual protected] void QMdiSubWindow::contextMenuEvent(QContextMenuEvent *contextMenuEvent)

Reimplements: QWidget::contextMenuEvent(QContextMenuEvent *event).

[override virtual protected] bool QMdiSubWindow::event(QEvent *event)

Reimplements: QWidget::event(QEvent *Event).

[override virtual protected] bool QMdiSubWindow::eventFilter(QObject *object, QEvent *event)

Reimplements: QObject::eventFilter(QObject *watched, QEvent *event).

[override virtual protected] void QMdiSubWindow::focusInEvent(QFocusEvent *focusInEvent)

Reimplements: QWidget::focusInEvent(QFocusEvent *event).

[override virtual protected] void QMdiSubWindow::focusOutEvent(QFocusEvent *focusOutEvent)

Reimplements: QWidget::focusOutEvent(QFocusEvent *event).

[override virtual protected] void QMdiSubWindow::hideEvent(QHideEvent *hideEvent)

Reimplements: QWidget::hideEvent(QHideEvent *event).

bool QMdiSubWindow::isShaded() const

Gibt true zurück, wenn dieses Fenster schattiert ist; andernfalls wird false zurückgegeben.

Ein Fenster ist schattiert, wenn es zusammengeklappt ist, so dass nur die Titelleiste sichtbar ist.

[override virtual protected] void QMdiSubWindow::keyPressEvent(QKeyEvent *keyEvent)

Reimplements: QWidget::keyPressEvent(QKeyEvent *event).

[override virtual protected] void QMdiSubWindow::leaveEvent(QEvent *leaveEvent)

Reimplements: QWidget::leaveEvent(QEvent *Event).

QMdiArea *QMdiSubWindow::mdiArea() const

Gibt den Bereich zurück, der dieses Unterfenster enthält, oder nullptr, wenn es keinen gibt.

Siehe auch QMdiArea::addSubWindow().

[override virtual] QSize QMdiSubWindow::minimumSizeHint() const

Reimplantiert eine Zugriffsfunktion für die Eigenschaft: QWidget::minimumSizeHint.

[override virtual protected] void QMdiSubWindow::mouseDoubleClickEvent(QMouseEvent *mouseEvent)

Reimplements: QWidget::mouseDoubleClickEvent(QMouseEvent *event).

[override virtual protected] void QMdiSubWindow::mouseMoveEvent(QMouseEvent *mouseEvent)

Reimplements: QWidget::mouseMoveEvent(QMouseEvent *event).

[override virtual protected] void QMdiSubWindow::mousePressEvent(QMouseEvent *mouseEvent)

Reimplements: QWidget::mousePressEvent(QMouseEvent *event).

[override virtual protected] void QMdiSubWindow::mouseReleaseEvent(QMouseEvent *mouseEvent)

Reimplements: QWidget::mouseReleaseEvent(QMouseEvent *event).

[override virtual protected] void QMdiSubWindow::moveEvent(QMoveEvent *moveEvent)

Reimplements: QWidget::moveEvent(QMoveEvent *event).

[override virtual protected] void QMdiSubWindow::paintEvent(QPaintEvent *paintEvent)

Reimplements: QWidget::paintEvent(QPaintEvent *event).

[override virtual protected] void QMdiSubWindow::resizeEvent(QResizeEvent *resizeEvent)

Reimplements: QWidget::resizeEvent(QResizeEvent *event).

Warnung: Beim Maximieren oder Wiederherstellen eines Teilfensters kann der resultierende Aufruf dieser Funktion eine ungültige QResizeEvent::oldSize() haben.

void QMdiSubWindow::setOption(QMdiSubWindow::SubWindowOption option, bool on = true)

Wenn on wahr ist, ist option für das Teilfenster aktiviert; andernfalls ist es deaktiviert. Siehe SubWindowOption für die Auswirkungen der einzelnen Optionen.

Siehe auch SubWindowOption und testOption().

void QMdiSubWindow::setSystemMenu(QMenu *systemMenu)

Legt systemMenu als aktuelles Systemmenü für dieses Teilfenster fest.

Standardmäßig hat jedes QMdiSubWindow ein Standard-Systemmenü.

QActions für das von QMdiSubWindow erstellte Systemmenü werden automatisch in Abhängigkeit vom aktuellen Fensterstatus aktualisiert; z.B. wird die Minimieren-Aktion deaktiviert, nachdem das Fenster minimiert wurde.

QActions, die vom Benutzer hinzugefügt werden, werden von QMdiSubWindow nicht aktualisiert.

QMdiSubWindow übernimmt das Eigentum an systemMenu; Sie müssen es nicht löschen. Alle bestehenden Menüs werden gelöscht.

Siehe auch systemMenu() und showSystemMenu().

void QMdiSubWindow::setWidget(QWidget *widget)

Legt widget als internes Widget dieses Teilfensters fest. Das interne Widget wird in der Mitte des Teilfensters unterhalb der Titelleiste angezeigt.

QMdiSubWindow übernimmt den temporären Besitz von widget; Sie müssen es nicht löschen. Ein eventuell vorhandenes internes Widget wird entfernt und an das Stammfenster zurückgegeben.

Siehe auch widget().

[override virtual protected] void QMdiSubWindow::showEvent(QShowEvent *showEvent)

Reimplements: QWidget::showEvent(QShowEvent *event).

[slot] void QMdiSubWindow::showShaded()

Durch den Aufruf dieser Funktion wird das Teilfenster in den schattierten Modus versetzt. Wenn das Teilfenster schattiert ist, ist nur die Titelleiste sichtbar.

Obwohl die Schattierung nicht von allen Stilen unterstützt wird, zeigt diese Funktion das Teilfenster als schattiert an, unabhängig davon, ob eine Unterstützung für die Schattierung vorhanden ist. Wenn sie jedoch mit Stilen ohne Schattierungsunterstützung verwendet wird, kann der Benutzer nicht über die Benutzeroberfläche (z. B. über eine Schattierungsschaltfläche in der Titelleiste) aus dem schattierten 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

Reimplantiert eine Zugriffsfunktion für die Eigenschaft: QWidget::sizeHint.

QMenu *QMdiSubWindow::systemMenu() const

Gibt einen Zeiger auf das aktuelle Systemmenü zurück, oder Null, wenn kein Systemmenü eingestellt ist. QMdiSubWindow bietet ein Standard-Systemmenü, aber Sie können das Menü auch mit setSystemMenu() einstellen.

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)

Reimplements: 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, wenn sich der Zustand des Fensters ändert. oldState ist der Zustand des Fensters vor der Änderung, und newState ist der neue, aktuelle Zustand.

© 2025 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.