QDockWidget Class
Die Klasse QDockWidget stellt ein Widget bereit, das in einem QMainWindow angedockt oder als oberstes Fenster auf dem Desktop platziert werden kann. Mehr...
Kopfzeile: | #include <QDockWidget> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
Vererbungen: | QWidget |
Öffentliche Typen
enum | DockWidgetFeature { DockWidgetClosable, DockWidgetMovable, DockWidgetFloatable, DockWidgetVerticalTitleBar, NoDockWidgetFeatures } |
flags | DockWidgetFeatures |
Eigenschaften
- allowedAreas : Qt::DockWidgetAreas
- features : DockWidgetFeatures
- floating : bool
- windowTitle : QString
Öffentliche Funktionen
QDockWidget(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | |
QDockWidget(const QString &title, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | |
virtual | ~QDockWidget() |
Qt::DockWidgetAreas | allowedAreas() const |
QDockWidget::DockWidgetFeatures | features() const |
bool | isAreaAllowed(Qt::DockWidgetArea area) const |
bool | isFloating() const |
void | setAllowedAreas(Qt::DockWidgetAreas areas) |
void | setFeatures(QDockWidget::DockWidgetFeatures features) |
void | setFloating(bool floating) |
void | setTitleBarWidget(QWidget *widget) |
void | setWidget(QWidget *widget) |
QWidget * | titleBarWidget() const |
QAction * | toggleViewAction() const |
QWidget * | widget() const |
Signale
void | allowedAreasChanged(Qt::DockWidgetAreas allowedAreas) |
void | dockLocationChanged(Qt::DockWidgetArea area) |
void | featuresChanged(QDockWidget::DockWidgetFeatures features) |
void | topLevelChanged(bool topLevel) |
void | visibilityChanged(bool visible) |
Geschützte Funktionen
virtual void | initStyleOption(QStyleOptionDockWidget *option) const |
Reimplementierte geschützte Funktionen
virtual void | changeEvent(QEvent *event) override |
virtual void | closeEvent(QCloseEvent *event) override |
virtual bool | event(QEvent *event) override |
virtual void | paintEvent(QPaintEvent *event) override |
Detaillierte Beschreibung
QDockWidget bietet das Konzept der Dock-Widgets, auch bekannt als Werkzeugpaletten oder Hilfsfenster. Dock-Fenster sind sekundäre Fenster, die im Dock-Widget-Bereich um die central widget in einer QMainWindow platziert werden.
Dockfenster können innerhalb ihres aktuellen Bereichs verschoben werden, in neue Bereiche verschoben werden und vom Endbenutzer verschoben (z.B. abgedockt) werden. Mit der QDockWidget-API kann der Programmierer die Fähigkeit der Dock-Widgets, sich zu bewegen, zu schweben und zu schließen, sowie die Bereiche, in denen sie platziert werden können, einschränken.
Erscheinungsbild
Ein QDockWidget besteht aus einer Titelleiste und dem Inhaltsbereich. Die Titelleiste zeigt das Dock-Widget window title, eine Schaltfläche zum Verschieben und eine Schaltfläche zum Schließen. Abhängig vom Status des QDockWidgets können die Schaltflächen zum Verschieben und Schließen entweder deaktiviert oder gar nicht angezeigt werden.
Das visuelle Erscheinungsbild der Titelleiste und der Schaltflächen ist abhängig von der verwendeten style.
Ein QDockWidget fungiert als Wrapper für sein Child-Widget, das mit setWidget() gesetzt wird. Benutzerdefinierte Größenhinweise, minimale und maximale Größen und Größenrichtlinien sollten im Kind-Widget implementiert werden. QDockWidget respektiert sie und passt seine eigenen Beschränkungen an, um den Rahmen und den Titel einzuschließen. Größenbeschränkungen sollten nicht für das QDockWidget selbst gesetzt werden, da sie sich ändern, je nachdem ob es angedockt ist; ein angedocktes QDockWidget hat keinen Rahmen und eine kleinere Titelleiste.
Hinweis: Unter macOS, wenn das QDockWidget ein natives Fensterhandle hat (z.B. wenn winId() auf ihm oder dem Kind-Widget aufgerufen wird), dann ist es aufgrund einer Einschränkung nicht möglich, das Dock-Widget beim Abdocken zu ziehen. Der Start des Ziehens wird das Dock-Widget abdocken, aber ein zweites Ziehen wird benötigt, um das Dock-Widget selbst zu bewegen.
Siehe auch QMainWindow.
Dokumentation der Mitgliedstypen
enum QDockWidget::DockWidgetFeature
flags QDockWidget::DockWidgetFeatures
Konstante | Wert | Beschreibung |
---|---|---|
QDockWidget::DockWidgetClosable | 0x01 | Das Dock-Widget kann geschlossen werden. |
QDockWidget::DockWidgetMovable | 0x02 | Das Dock-Widget kann vom Benutzer zwischen Docks verschoben werden. |
QDockWidget::DockWidgetFloatable | 0x04 | Das Dock-Widget kann vom Hauptfenster abgetrennt werden und als unabhängiges Fenster schweben. |
QDockWidget::DockWidgetVerticalTitleBar | 0x08 | Das Dock-Widget zeigt eine vertikale Titelleiste auf seiner linken Seite an. Dies kann verwendet werden, um den vertikalen Platz in einem QMainWindow zu vergrößern. |
QDockWidget::NoDockWidgetFeatures | 0x00 | Das Dock-Widget kann nicht geschlossen, verschoben oder verschoben werden. |
Der Typ DockWidgetFeatures ist ein Typedef für QFlags<DockWidgetFeature>. Er speichert eine ODER-Kombination von DockWidgetFeature-Werten.
Dokumentation der Eigenschaft
allowedAreas : Qt::DockWidgetAreas
Bereiche, in denen das Docking-Widget platziert werden kann
Die Standardeinstellung ist Qt::AllDockWidgetAreas.
Zugriffsfunktionen:
Qt::DockWidgetAreas | allowedAreas() const |
void | setAllowedAreas(Qt::DockWidgetAreas areas) |
Benachrichtigungssignal:
void | allowedAreasChanged(Qt::DockWidgetAreas allowedAreas) |
Siehe auch Qt::DockWidgetArea.
features : DockWidgetFeatures
Diese Eigenschaft legt fest, ob das Dock-Widget beweglich, schließbar und schwimmfähig ist.
Standardmäßig ist diese Eigenschaft auf eine Kombination aus DockWidgetClosable, DockWidgetMovable und DockWidgetFloatable eingestellt.
Zugriffsfunktionen:
QDockWidget::DockWidgetFeatures | features() const |
void | setFeatures(QDockWidget::DockWidgetFeatures features) |
Benachrichtigungssignal:
void | featuresChanged(QDockWidget::DockWidgetFeatures features) |
Siehe auch DockWidgetFeature.
floating : bool
Diese Eigenschaft gibt an, ob das Dock-Widget schwebend ist.
Ein schwebendes Andock-Widget wird dem Benutzer als einzelnes, unabhängiges Fenster "über" seinem übergeordneten QMainWindow präsentiert, anstatt entweder im QMainWindow oder in einer Gruppe von Andock-Widgets mit Registerkarten angedockt zu sein.
Floating-Dock-Widgets können individuell positioniert und in der Größe verändert werden, sowohl programmatisch als auch durch Mausinteraktion.
Standardmäßig ist diese Eigenschaft true
.
Wenn sich diese Eigenschaft ändert, wird das Signal topLevelChanged()
ausgegeben.
Zugriffsfunktionen:
bool | isFloating() const |
void | setFloating(bool floating) |
Notifier-Signal:
void | topLevelChanged(bool topLevel) |
Siehe auch isWindow() und topLevelChanged().
windowTitle : QString
Diese Eigenschaft enthält den Titel des Docking-Widgets (Beschriftung)
Standardmäßig enthält diese Eigenschaft eine leere Zeichenkette.
Zugriffsfunktionen:
QString | windowTitle() const |
void | setWindowTitle(const QString &) |
Benachrichtigungssignal:
void | windowTitleChanged(const QString &title) |
Member Function Dokumentation
[explicit]
QDockWidget::QDockWidget(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
Konstruiert ein QDockWidget mit dem Elternteil parent und den Fensterflags flags. Das Dock-Widget wird im linken Bereich des Dock-Widgets platziert.
[explicit]
QDockWidget::QDockWidget(const QString &title, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
Konstruiert ein QDockWidget mit dem Elternteil parent und den Fensterflags flags. Das DockWidget wird im linken DockWidget-Bereich platziert.
Der Fenstertitel wird auf title gesetzt. Dieser Titel wird verwendet, wenn das QDockWidget angedockt und abgedockt wird. Er wird auch in dem von QMainWindow bereitgestellten Kontextmenü verwendet.
Siehe auch setWindowTitle().
[virtual noexcept]
QDockWidget::~QDockWidget()
Zerstört das Dock-Widget.
[signal]
void QDockWidget::allowedAreasChanged(Qt::DockWidgetAreas allowedAreas)
Dieses Signal wird ausgesendet, wenn sich die Eigenschaft allowedAreas ändert. Der Parameter allowedAreas gibt den neuen Wert der Eigenschaft an.
Hinweis: Meldesignal für die Eigenschaft allowedAreas.
[override virtual protected]
void QDockWidget::changeEvent(QEvent *event)
Reimplements: QWidget::changeEvent(QEvent *Event).
[override virtual protected]
void QDockWidget::closeEvent(QCloseEvent *event)
Reimplements: QWidget::closeEvent(QCloseEvent *event).
[signal]
void QDockWidget::dockLocationChanged(Qt::DockWidgetArea area)
Dieses Signal wird ausgegeben, wenn das Dock-Widget in ein anderes Dock area oder an eine andere Stelle in seinem aktuellen Dockbereich verschoben wird. Dies geschieht, wenn das Dock-Widget programmatisch verschoben wird oder vom Benutzer an eine neue Position gezogen wird.
[override virtual protected]
bool QDockWidget::event(QEvent *event)
Reimplements: QWidget::event(QEvent *Event).
[signal]
void QDockWidget::featuresChanged(QDockWidget::DockWidgetFeatures features)
Dieses Signal wird ausgesendet, wenn sich die Eigenschaft features ändert. Der Parameter features gibt den neuen Wert der Eigenschaft an.
Hinweis: Meldesignal für die Eigenschaft features.
[virtual protected]
void QDockWidget::initStyleOption(QStyleOptionDockWidget *option) const
Initialisieren Sie option mit den Werten aus dieser QDockWidget. Diese Methode ist nützlich für Unterklassen, wenn sie eine QStyleOptionDockWidget benötigen, aber nicht alle Informationen selbst eingeben wollen.
Siehe auch QStyleOption::initFrom().
bool QDockWidget::isAreaAllowed(Qt::DockWidgetArea area) const
Gibt true
zurück, wenn dieses Dock-Widget in der angegebenen area platziert werden kann; andernfalls wird false
zurückgegeben.
[override virtual protected]
void QDockWidget::paintEvent(QPaintEvent *event)
Reimplements: QWidget::paintEvent(QPaintEvent *event).
void QDockWidget::setTitleBarWidget(QWidget *widget)
Setzt eine beliebige widget als Titelleiste des Dock-Widgets. Wenn widget nullptr
ist, wird jedes benutzerdefinierte Titelleisten-Widget, das zuvor für das Dock-Widget festgelegt wurde, entfernt, aber nicht gelöscht, und stattdessen wird die Standard-Titelleiste verwendet.
Wenn ein Titelleisten-Widget gesetzt ist, verwendet QDockWidget keine nativen Fensterdekorationen, wenn es schwebend ist.
Hier sind einige Tipps für die Implementierung eigener Titelleisten:
- Mausereignisse, die nicht explizit durch das Titelleisten-Widget behandelt werden, müssen durch den Aufruf von QMouseEvent::ignore() ignoriert werden. Diese Ereignisse werden dann an das übergeordnete Widget QDockWidget weitergeleitet, das sie auf die übliche Weise behandelt: Bewegen, wenn die Titelleiste gezogen wird, Andocken und Abdocken, wenn sie doppelt angeklickt wird, usw.
- Wenn DockWidgetVerticalTitleBar auf QDockWidget gesetzt wird, wird das Titelleisten-Widget entsprechend neu positioniert. In resizeEvent() sollte die Titelleiste prüfen, welche Ausrichtung sie annehmen soll:
QDockWidget *dockWidget = qobject_cast<QDockWidget*>(parentWidget()); if (dockWidget->features() & QDockWidget::DockWidgetVerticalTitleBar) { // I need to be vertical } else { // I need to be horizontal }
- Das Titelleisten-Widget muss eine gültige QWidget::sizeHint() und QWidget::minimumSizeHint() haben. Diese Funktionen sollten die aktuelle Ausrichtung der Titelleiste berücksichtigen.
- Es ist nicht möglich, eine Titelleiste aus einem Docking Widget zu entfernen. Ein ähnlicher Effekt kann jedoch erzielt werden, indem ein standardmäßig konstruiertes QWidget als Titelleisten-Widget festgelegt wird.
Durch die Verwendung von qobject_cast() wie oben gezeigt, hat das Titelleisten-Widget vollen Zugriff auf seine übergeordnete QDockWidget. Daher kann es Operationen wie das Andocken und Ausblenden als Reaktion auf Benutzeraktionen durchführen.
Siehe auch titleBarWidget() und DockWidgetVerticalTitleBar.
void QDockWidget::setWidget(QWidget *widget)
Setzt das Widget für das Dock-Widget auf widget.
Wenn das Dock-Widget sichtbar ist, wenn widget hinzugefügt wird, müssen Sie es explizit show().
Beachten Sie, dass Sie das Layout von widget hinzufügen müssen, bevor Sie diese Funktion aufrufen; andernfalls wird widget nicht sichtbar sein.
Siehe auch widget().
QWidget *QDockWidget::titleBarWidget() const
Gibt das benutzerdefinierte Titelleisten-Widget zurück, das auf QDockWidget festgelegt wurde, oder nullptr
, wenn keine benutzerdefinierte Titelleiste festgelegt wurde.
Siehe auch setTitleBarWidget().
QAction *QDockWidget::toggleViewAction() const
Gibt eine ankreuzbare Aktion zurück, die zu Menüs und Symbolleisten hinzugefügt werden kann, damit der Benutzer dieses Andock-Widget anzeigen oder schließen kann.
Der Text der Aktion wird auf den Fenstertitel des Docking-Widgets gesetzt.
Das Objekt QAction ist Eigentum des QDockWidget. Es wird automatisch gelöscht, wenn das QDockWidget zerstört wird.
Hinweis: Die Aktion kann nicht verwendet werden, um das Dock-Widget programmatisch ein- oder auszublenden. Verwenden Sie dafür die Eigenschaft visible.
Siehe auch QAction::text und QWidget::windowTitle.
[signal]
void QDockWidget::topLevelChanged(bool topLevel)
Dieses Signal wird ausgesendet, wenn sich die Eigenschaft floating ändert. Der Parameter topLevel ist true, wenn das Dock-Widget jetzt schwebend ist; andernfalls ist er false.
Hinweis: Benachrichtigungssignal für die Eigenschaft floating.
Siehe auch isWindow().
[signal]
void QDockWidget::visibilityChanged(bool visible)
Dieses Signal wird ausgegeben, wenn das Docking Widget visible (oder unsichtbar) wird. Dies geschieht, wenn das Widget ein- oder ausgeblendet wird, sowie wenn es in einem Andockbereich mit Registerkarten angedockt ist und seine Registerkarte ausgewählt oder nicht ausgewählt wird.
Hinweis: Das Signal kann von QWidget::isVisible() abweichen. Dies kann der Fall sein, wenn ein Dock-Widget minimiert oder mit einer nicht ausgewählten oder inaktiven Registerkarte verknüpft wird.
QWidget *QDockWidget::widget() const
Gibt das Widget für das Andock-Widget zurück. Diese Funktion gibt Null zurück, wenn das Widget nicht gesetzt wurde.
Siehe auch setWidget().
© 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.