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
- 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 |
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.
Konstante | Wert | Beschreibung |
---|---|---|
QMdiSubWindow::RubberBandResize | 0x4 | Wenn 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::RubberBandMove | 0x8 | Wenn 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:
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.