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.
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
| Konstante | Wert | Beschreibung |
|---|---|---|
QDockWidget::DockWidgetClosable | 0x01 | Das Dock-Widget kann geschlossen werden. |
QDockWidget::DockWidgetMovable | 0x02 | Das Dock-Widget kann vom Benutzer zwischen den Docks verschoben werden. |
QDockWidget::DockWidgetFloatable | 0x04 | Das Dock-Widget kann vom Hauptfenster getrennt und als eigenständiges Fenster angezeigt werden. |
QDockWidget::DockWidgetVerticalTitleBar | 0x08 | Das 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::NoDockWidgetFeatures | 0x00 | Das 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.