Auf dieser Seite

QDockWidget Class

Die Klasse „QDockWidget“ stellt ein Widget bereit, das in einem „ QMainWindow “ angedockt oder als eigenständiges Fenster auf dem Desktop angezeigt werden kann. Mehr...

Überschrift: #include <QDockWidget>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Erbt von: QWidget

Öffentliche Typen

enum DockWidgetFeature { DockWidgetClosable, DockWidgetMovable, DockWidgetFloatable, DockWidgetVerticalTitleBar, NoDockWidgetFeatures }
flags DockWidgetFeatures

Eigenschaften

Ö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
Qt::DockWidgetArea dockLocation() const
QDockWidget::DockWidgetFeatures features() const
bool isAreaAllowed(Qt::DockWidgetArea area) const
bool isFloating() const
void setAllowedAreas(Qt::DockWidgetAreas areas)
(since 6.9) void setDockLocation(Qt::DockWidgetArea area)
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

Neu implementierte 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

Ausführliche 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 das „ central widget “ in einem „ QMainWindow “ platziert werden.

Schematische Darstellung eines Dock-Widgets in Symbolleisten und eines Containers für Widgets

Dock-Fenster können vom Endbenutzer innerhalb ihres aktuellen Bereichs verschoben, in neue Bereiche verschoben und freigestellt (d. h. aus dem Dock gelöst) werden. Die QDockWidget-API ermöglicht es dem Programmierer, die Möglichkeiten der Dock-Widgets zum Verschieben, Freistellen und Schließen sowie die Bereiche, in denen sie platziert werden können, einzuschränken.

Darstellung

Ein QDockWidget besteht aus einer Titelleiste und dem Inhaltsbereich. Die Titelleiste zeigt den Namen des Dock-Widgets ( window title), eine Schaltfläche zum Freischalten und eine Schaltfläche zum Schließen an. Je nach Zustand des QDockWidgets können die Schaltflächen zum Freischalten und Schließen entweder deaktiviert sein oder gar nicht angezeigt werden.

Das Erscheinungsbild der Titelleiste und der Schaltflächen hängt von der verwendeten „ style “ ab.

Ein QDockWidget fungiert als Wrapper für sein untergeordnetes Widget, das mit ` setWidget()` festgelegt wird. Benutzerdefinierte Größenhinweise, Mindest- und Höchstgrößen sowie Größenrichtlinien sollten im untergeordneten Widget implementiert werden. QDockWidget berücksichtigt diese und passt seine eigenen Beschränkungen entsprechend an, um den Rahmen und den Titel einzubeziehen. Größenbeschränkungen sollten nicht für das QDockWidget selbst festgelegt werden, da sie sich je nach Andockstatus ändern; ein angedocktes QDockWidget hat keinen Rahmen und eine schmalere Titelleiste.

Hinweis: Unter macOS gilt: Verfügt das QDockWidget über einen nativen Fenster-Handle (beispielsweise wenn winId() für das QDockWidget oder das untergeordnete Widget aufgerufen wird), ist es aufgrund einer Einschränkung nicht möglich, das angedockte Widget beim Abkoppeln zu ziehen. Durch das Starten des Ziehvorgangs wird das Dock-Widget entdockt, es ist jedoch ein zweiter Ziehvorgang erforderlich, um das Dock-Widget selbst zu verschieben.

Siehe auch ` QMainWindow`.

Dokumentation zu Mitgliedstypen

enum QDockWidget::DockWidgetFeature
flags QDockWidget::DockWidgetFeatures

KonstanteWertBeschreibung
QDockWidget::DockWidgetClosable0x01Das Dock-Widget kann geschlossen werden.
QDockWidget::DockWidgetMovable0x02Das Dock-Widget kann vom Benutzer zwischen den Docks verschoben werden.
QDockWidget::DockWidgetFloatable0x04Das Dock-Widget kann vom Hauptfenster getrennt und als eigenständiges Fenster angezeigt werden.
QDockWidget::DockWidgetVerticalTitleBar0x08Das Dock-Widget zeigt auf seiner linken Seite eine vertikale Titelleiste an. Diese kann verwendet werden, um den vertikalen Platz in einem „ QMainWindow “ zu vergrößern.
QDockWidget::NoDockWidgetFeatures0x00Das Dock-Widget kann weder geschlossen noch verschoben noch als freistehendes Fenster angezeigt werden.

Der Typ `DockWidgetFeatures` ist ein `typedef` für ` QFlags<DockWidgetFeature>`. Er speichert eine ODER-Kombination von `DockWidgetFeature`-Werten.

Dokumentation zu den Eigenschaften

allowedAreas : Qt::DockWidgetAreas

Bereiche, in denen das Dock-Widget platziert werden kann

Die Standardeinstellung ist „ Qt::AllDockWidgetAreas “.

Zugriffsfunktionen:

Qt::DockWidgetAreas allowedAreas() const
void setAllowedAreas(Qt::DockWidgetAreas areas)

Notifier-Signal:

void allowedAreasChanged(Qt::DockWidgetAreas allowedAreas)

Siehe auch Qt::DockWidgetArea.

[since 6.9] dockLocation : Qt::DockWidgetArea

Diese Eigenschaft enthält die aktuelle Andockposition oder „Qt::NoDockLocation“, wenn dieses Andock-Widget frei schwebend ist oder kein Hauptfenster als übergeordnetes Fenster hat.

Diese Aufzählung wurde in Qt 6.9 eingeführt.

Zugriffsfunktionen:

Qt::DockWidgetArea dockLocation() const
void setDockLocation(Qt::DockWidgetArea area)

Notifier-Signal:

void dockLocationChanged(Qt::DockWidgetArea area)

features : DockWidgetFeatures

Diese Eigenschaft legt fest, ob das Dock-Widget verschiebbar, schließbar und frei positionierbar ist

Standardmäßig ist diese Eigenschaft auf eine Kombination aus „ DockWidgetClosable “, „ DockWidgetMovable “ und „ DockWidgetFloatable “ gesetzt.

Zugriffsfunktionen:

QDockWidget::DockWidgetFeatures features() const
void setFeatures(QDockWidget::DockWidgetFeatures features)

Notifier-Signal:

void featuresChanged(QDockWidget::DockWidgetFeatures features)

Siehe auch „ DockWidgetFeature “.

floating : bool

Diese Eigenschaft gibt an, ob das Dock-Widget frei schwebend ist

Ein frei positionierbares Dock-Widget wird dem Benutzer als einzelnes, unabhängiges Fenster „über“ seinem übergeordneten „ QMainWindow “ angezeigt, anstatt entweder im „ QMainWindow “ oder in einer Gruppe von Dock-Widgets mit Registerkarten angedockt zu sein.

Freistehende Dock-Widgets können sowohl programmgesteuert als auch per Mausklick individuell positioniert und in ihrer Größe angepasst werden.

Standardmäßig ist diese Eigenschaft auf „ true “ gesetzt.

Wenn sich diese Eigenschaft ändert, wird das Signal „ topLevelChanged() “ ausgelöst.

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 (die Beschriftung) des Dock-Widgets

Standardmäßig enthält diese Eigenschaft eine leere Zeichenkette.

Zugriffsfunktionen:

QString windowTitle() const
void setWindowTitle(const QString &)

Notifier-Signal:

void windowTitleChanged(const QString &title)

Dokumentation der Member-Funktionen

[explicit] QDockWidget::QDockWidget(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())

Erstellt ein QDockWidget mit dem übergeordneten Element „ parent “ und den Fensterflags „ flags “. Das Dock-Widget wird im linken Dock-Bereich platziert.

[explicit] QDockWidget::QDockWidget(const QString &title, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())

Erstellt ein QDockWidget mit dem übergeordneten parent und den Fensterflags flags. Das Dock-Widget wird im linken Dock-Bereich platziert.

Der Fenstertitel wird auf „ title “ gesetzt. Dieser Titel wird verwendet, wenn das QDockWidget angedockt und abgedockt wird. Er wird außerdem im Kontextmenü verwendet, das von „ QMainWindow “ bereitgestellt wird.

Siehe auch setWindowTitle().

[virtual noexcept] QDockWidget::~QDockWidget()

Löscht das Dock-Widget.

[signal] void QDockWidget::allowedAreasChanged(Qt::DockWidgetAreas allowedAreas)

Dieses Signal wird ausgelöst, wenn sich die Eigenschaft „ allowedAreas “ ändert. Der Parameter „ allowedAreas “ gibt den neuen Wert der Eigenschaft an.

Hinweis: Notifier -Signal für die Eigenschaft „ allowedAreas “.

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

Umsetzt: ` QWidget::changeEvent(QEvent *event)`.

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

Umsetzt: ` QWidget::closeEvent(QCloseEvent *event)`.

[signal] void QDockWidget::dockLocationChanged(Qt::DockWidgetArea area)

Dieses Signal wird ausgelöst, wenn das Dock-Widget in ein anderes Dock area verschoben oder an eine andere Position innerhalb seines aktuellen Dock-Bereichs verschoben wird. Dies geschieht, wenn das Dock-Widget programmgesteuert verschoben oder vom Benutzer an eine neue Position gezogen wird.

Hinweis: Notifier -Signal für die Eigenschaft „ dockLocation “.

Siehe auch „ dockLocation()“ und „ setDockLocation()“.

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

Umsetzt: ` QWidget::event(QEvent *event)`.

[signal] void QDockWidget::featuresChanged(QDockWidget::DockWidgetFeatures features)

Dieses Signal wird ausgelöst, wenn sich die Eigenschaft „ features “ ändert. Der Parameter „ features “ gibt den neuen Wert der Eigenschaft an.

Hinweis: Notifier -Signal für die Eigenschaft „ features “.

[virtual protected] void QDockWidget::initStyleOption(QStyleOptionDockWidget *option) const

Initialisieren Sie ` option ` mit den Werten aus dieser Datei: QDockWidget. Diese Methode ist für Unterklassen nützlich, wenn diese ein ` QStyleOptionDockWidget` benötigen, aber nicht alle Informationen selbst eingeben möchten.

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)

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

[since 6.9] void QDockWidget::setDockLocation(Qt::DockWidgetArea area)

Weist diesem Dock-Widget die Position „ area “ zu. Wenn es an einer anderen Dock-Position angedockt ist, wird es an die Position „ area “ verschoben. Wenn es frei schwebend ist oder Teil frei schwebender Registerkarten ist, wird es beim nächsten Aufruf von „ setFloating(false)“ an die Position „ area “ angedockt.

Hinweis: setDockLocation (Qt::NoDockLocation) entspricht setFloating(true).

Hinweis: Setter -Funktion für die Eigenschaft „ dockLocation “.

Diese Funktion wurde in Qt 6.9 eingeführt.

Siehe auch „ dockLocation()“ und „ dockLocationChanged()“.

void QDockWidget::setTitleBarWidget(QWidget *widget)

Legt ein beliebiges „ widget “ als Titelleiste des Dock-Widgets fest. Wenn „ widget “ auf „ nullptr “ gesetzt ist, wird jedes zuvor für das Dock-Widget festgelegte benutzerdefinierte Titelleisten-Widget entfernt, jedoch nicht gelöscht, und stattdessen wird die Standard-Titelleiste verwendet.

Wenn ein Titelleisten-Widget festgelegt ist, verwendet „ QDockWidget “ keine nativen Fensterdekorationen, wenn es frei positioniert wird.

Hier sind einige Tipps zur Implementierung benutzerdefinierter Titelleisten:

  • Mausereignisse, die nicht explizit vom Titelleisten-Widget verarbeitet werden, müssen durch den Aufruf von ` QMouseEvent::ignore()` ignoriert werden. Diese Ereignisse werden dann an das übergeordnete ` QDockWidget `-Element weitergeleitet, das sie auf die übliche Weise verarbeitet: Verschieben beim Ziehen der Titelleiste, Andocken und Abdocken beim Doppelklick usw.
  • Wenn für ` QDockWidget` die Eigenschaft ` DockWidgetVerticalTitleBar ` gesetzt ist, 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 über gültige Funktionen ` QWidget::sizeHint()` und ` QWidget::minimumSizeHint()` verfügen. Diese Funktionen sollten die aktuelle Ausrichtung der Titelleiste berücksichtigen.
  • Es ist nicht möglich, eine Titelleiste aus einem Dock-Widget zu entfernen. Ein ähnlicher Effekt lässt sich jedoch erzielen, indem ein standardmäßig konstruiertes ` QWidget ` als Titelleisten-Widget festgelegt wird.

Bei Verwendung von ` qobject_cast()` wie oben gezeigt hat das Titelleisten-Widget vollen Zugriff auf sein übergeordnetes ` QDockWidget`. Daher kann es als Reaktion auf Benutzeraktionen Vorgänge wie das Andocken und Ausblenden ausfü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 mit „ show()“ ausblenden.

Beachten Sie, dass Sie das Layout von „ widget “ hinzufügen müssen, bevor Sie diese Funktion aufrufen; andernfalls ist das „ widget “ nicht sichtbar.

Siehe auch ` widget()`.

QWidget *QDockWidget::titleBarWidget() const

Gibt das für die „ QDockWidget “ festgelegte benutzerdefinierte Titelleisten-Widget zurück oder „ nullptr “, falls keine benutzerdefinierte Titelleiste festgelegt wurde.

Siehe auch setTitleBarWidget().

QAction *QDockWidget::toggleViewAction() const

Gibt eine „Checkable“-Aktion zurück, die zu Menüs und Symbolleisten hinzugefügt werden kann, damit der Benutzer dieses Dock-Widget ein- oder ausblenden kann.

Der Text der Aktion entspricht dem Fenstertitel des Dock-Widgets.

Das Objekt „ QAction “ gehört zum „ QDockWidget “. Es wird automatisch gelöscht, wenn das „ QDockWidget “ zerstört wird.

Hinweis: Die Aktion kann nicht verwendet werden, um das Dock-Widget programmgesteuert ein- oder auszublenden. Verwenden Sie hierfür die Eigenschaft „ visible “.

Siehe auch „ QAction::text “ und „ QWidget::windowTitle “.

[signal] void QDockWidget::topLevelChanged(bool topLevel)

Dieses Signal wird ausgelöst, wenn sich die Eigenschaft „ floating “ ändert. Der Parameter „ topLevel “ ist „true“, wenn das Dock-Widget nun frei schwebend ist; andernfalls ist er „false“.

Hinweis: Notifier -Signal für die Eigenschaft „ floating “.

Siehe auch „ isWindow()“.

[signal] void QDockWidget::visibilityChanged(bool visible)

Dieses Signal wird ausgelöst, wenn das Dock-Widget „ visible “ (oder unsichtbar) wird. Dies geschieht, wenn das Widget ausgeblendet oder eingeblendet wird, sowie wenn es in einem Dock-Bereich mit Registerkarten angedockt ist und die zugehörige Registerkarte ausgewählt oder die Auswahl aufgehoben wird.

Hinweis: Das Signal kann von „ QWidget::isVisible()“ abweichen. Dies kann der Fall sein, wenn ein Dock-Widget minimiert oder in Registerkarten aufgeteilt und einer nicht ausgewählten oder inaktiven Registerkarte zugeordnet ist.

QWidget *QDockWidget::widget() const

Gibt das Widget für das Dock-Widget zurück. Diese Funktion gibt Null zurück, wenn das Widget nicht festgelegt wurde.

Siehe auch „ setWidget()“.

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