En esta página

QDockWidget Class

La clase QDockWidget proporciona un widget que puede ser anclado dentro de un QMainWindow o flotado como una ventana de nivel superior en el escritorio. Más...

Cabecera: #include <QDockWidget>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Hereda: QWidget

Tipos públicos

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

Propiedades

Funciones públicas

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

Señales

void allowedAreasChanged(Qt::DockWidgetAreas allowedAreas)
void dockLocationChanged(Qt::DockWidgetArea area)
void featuresChanged(QDockWidget::DockWidgetFeatures features)
void topLevelChanged(bool topLevel)
void visibilityChanged(bool visible)

Funciones protegidas

virtual void initStyleOption(QStyleOptionDockWidget *option) const

Funciones protegidas reimplementadas

virtual void changeEvent(QEvent *event) override
virtual void closeEvent(QCloseEvent *event) override
virtual bool event(QEvent *event) override
virtual void paintEvent(QPaintEvent *event) override

Descripción Detallada

QDockWidget proporciona el concepto de widgets dock, también conocidos como paletas de herramientas o ventanas de utilidades. Las ventanas acoplables son ventanas secundarias situadas en el área del widget acopl able alrededor de central widget en QMainWindow.

Diagrama del widget dock dentro de las barras de herramientas y un contenedor para widgets

El usuario final puede mover las ventanas acoplables dentro de su área actual, moverlas a nuevas áreas y hacerlas flotar (por ejemplo, desacoplarlas). La API QDockWidget permite al programador restringir la capacidad de movimiento, flotación y cierre de los widgets dock, así como las áreas en las que pueden colocarse.

Aspecto

Un QDockWidget consta de una barra de título y un área de contenido. La barra de título muestra los widgets del dock window title, un botón de flotación y un botón de cierre. Dependiendo del estado del QDockWidget, los botones de flotar y cerrar pueden estar desactivados o no mostrarse en absoluto.

El aspecto visual de la barra de título y de los botones depende de la dirección style que se esté utilizando.

Un QDockWidget actúa como una envoltura para su widget hijo, establecido con setWidget(). Las sugerencias de tamaño personalizadas, los tamaños mínimo y máximo y las políticas de tamaño deben implementarse en el widget hijo. QDockWidget las respetará, ajustando sus propias restricciones para incluir el marco y el título. Las restricciones de tamaño no deben establecerse en el propio QDockWidget, porque cambian dependiendo de si está acoplado; un QDockWidget acoplado no tiene marco y tiene una barra de título más pequeña.

Nota: En macOS, si el QDockWidget tiene un manejador de ventana nativo (por ejemplo, si se llama a winId() en él o en el widget hijo), entonces debido a una limitación no será posible arrastrar el widget del dock al desacoplarlo. Iniciar el arrastre desacoplará el widget dock, pero será necesario un segundo arrastre para mover el propio widget dock.

Véase también QMainWindow.

Documentación de tipos de miembros

enum QDockWidget::DockWidgetFeature
flags QDockWidget::DockWidgetFeatures

ConstanteValorDescripción
QDockWidget::DockWidgetClosable0x01El widget de muelle puede cerrarse.
QDockWidget::DockWidgetMovable0x02El widget de muelle puede ser movido entre muelles por el usuario.
QDockWidget::DockWidgetFloatable0x04El widget del dock puede separarse de la ventana principal y flotar como una ventana independiente.
QDockWidget::DockWidgetVerticalTitleBar0x08El widget del dock muestra una barra de título vertical en su parte izquierda. Puede utilizarse para aumentar el espacio vertical en QMainWindow.
QDockWidget::NoDockWidgetFeatures0x00El widget de acoplamiento no puede cerrarse, moverse ni flotar.

El tipo DockWidgetFeatures es un typedef para QFlags<DockWidgetFeature>. Almacena una combinación OR de valores DockWidgetFeature.

Documentación de Propiedades

allowedAreas : Qt::DockWidgetAreas

Zonas en las que se puede colocar el widget del dock.

Por defecto es Qt::AllDockWidgetAreas.

Funciones de acceso:

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

Señal del notificador:

void allowedAreasChanged(Qt::DockWidgetAreas allowedAreas)

Véase también Qt::DockWidgetArea.

[since 6.9] dockLocation : Qt::DockWidgetArea

Esta propiedad contiene la ubicación actual del dock, o Qt::NoDockLocation si este widget del dock es flotante o no tiene un padre mainwindow.

Esta propiedad se introdujo en Qt 6.9.

Funciones de acceso:

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

Señal del notificador:

void dockLocationChanged(Qt::DockWidgetArea area)

features : DockWidgetFeatures

Esta propiedad indica si el widget del dock es movible, cerrable y flotante.

Por defecto, esta propiedad está establecida a una combinación de DockWidgetClosable, DockWidgetMovable y DockWidgetFloatable.

Funciones de acceso:

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

Señal del notificador:

void featuresChanged(QDockWidget::DockWidgetFeatures features)

Véase también DockWidgetFeature.

floating : bool

Esta propiedad indica si el widget dock es flotante.

Un widget acoplable flotante se presenta al usuario como una ventana única e independiente "encima" de su padre QMainWindow, en lugar de estar acoplado en QMainWindow, o en un grupo de widgets acoplables con pestañas.

Los widgets acoplables flotantes pueden posicionarse y redimensionarse individualmente, tanto mediante programación como mediante la interacción del ratón.

Por defecto, esta propiedad es true.

Cuando esta propiedad cambia, se emite la señal topLevelChanged().

Funciones de acceso:

bool isFloating() const
void setFloating(bool floating)

Señal del notificador:

void topLevelChanged(bool topLevel)

Véase también isWindow() y topLevelChanged().

windowTitle : QString

Esta propiedad contiene el título del widget del dock.

Por defecto, esta propiedad contiene una cadena vacía.

Funciones de acceso:

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

Señal del notificador:

void windowTitleChanged(const QString &title)

Documentación de funciones miembro

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

Construye un QDockWidget con parent parent y window flags flags. El widget dock se colocará en el área izquierda del widget dock.

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

Construye un QDockWidget con parent parent y window flags flags. El widget dock se colocará en el área izquierda del widget dock.

El título de la ventana se establece en title. Este título se utiliza cuando el QDockWidget está acoplado y desacoplado. También se utiliza en el menú contextual proporcionado por QMainWindow.

Véase también setWindowTitle().

[virtual noexcept] QDockWidget::~QDockWidget()

Destruye el widget del dock.

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

Esta señal se emite cuando cambia la propiedad allowedAreas. El parámetro allowedAreas indica el nuevo valor de la propiedad.

Nota: Señal notificadora para la propiedad allowedAreas.

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

Reimplementa: QWidget::changeEvent(QEvent *event).

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

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

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

Esta señal se emite cuando el widget del dock se mueve a otro dock area, o se mueve a una ubicación diferente en su área de dock actual. Esto ocurre cuando el widget del dock es movido programáticamente o es arrastrado a una nueva ubicación por el usuario.

Nota: Señal notificadora para la propiedad dockLocation.

Véase también dockLocation() y setDockLocation().

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

Reimplementa: QWidget::event(QEvent *event).

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

Esta señal se emite cuando cambia la propiedad features. El parámetro features indica el nuevo valor de la propiedad.

Nota: Señal notificadora para la propiedad features.

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

Inicializa option con los valores de este QDockWidget. Este método es útil para las subclases cuando necesitan un QStyleOptionDockWidget, pero no quieren rellenar toda la información ellos mismos.

Véase también QStyleOption::initFrom().

bool QDockWidget::isAreaAllowed(Qt::DockWidgetArea area) const

Devuelve true si este widget de muelle se puede colocar en el area dado ; en caso contrario devuelve false.

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

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

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

Asigna este widget de anclaje a area. Si está anclado en otra ubicación de anclaje, se moverá a area. Si es flotante o parte de pestañas flotantes, la siguiente llamada a setFloating(false) lo anclará en area.

Nota: setDockLocation(Qt::NoDockLocation) es equivalente a setFloating(true).

Nota: Función Setter para la propiedad dockLocation.

Esta función se introdujo en Qt 6.9.

Ver también dockLocation() y dockLocationChanged().

void QDockWidget::setTitleBarWidget(QWidget *widget)

Establece un widget arbitrario como barra de título del widget del dock. Si widget es nullptr, cualquier widget de barra de título personalizado establecido previamente en el widget del dock se elimina, pero no se borra, y en su lugar se utilizará la barra de título predeterminada.

Si se establece un widget de barra de título, QDockWidget no utilizará decoraciones nativas de la ventana cuando esté flotando.

Estos son algunos consejos para implementar barras de título personalizadas:

  • Los eventos del ratón que no son manejados explícitamente por el widget de la barra de título deben ser ignorados llamando a QMouseEvent::ignore(). Estos eventos se propagan al padre QDockWidget, que los maneja de la manera habitual, moviéndose cuando se arrastra la barra de título, acoplándose y desacoplándose cuando se hace doble clic, etc.
  • Cuando DockWidgetVerticalTitleBar se establece en QDockWidget, el widget de la barra de título se reposiciona en consecuencia. En resizeEvent(), la barra de título debe comprobar qué orientación debe asumir:
    QDockWidget *dockWidget = qobject_cast<QDockWidget*>(parentWidget());
    if (dockWidget->features() & QDockWidget::DockWidgetVerticalTitleBar) {
        // I need to be vertical
    } else {
        // I need to be horizontal
    }
  • El widget de la barra de título debe tener una función válida QWidget::sizeHint() y QWidget::minimumSizeHint(). Estas funciones deben tener en cuenta la orientación actual de la barra de título.
  • No es posible eliminar una barra de título de un widget dock. Sin embargo, se puede conseguir un efecto similar estableciendo un QWidget construido por defecto como widget de la barra de título.

Utilizando qobject_cast() como se muestra arriba, el widget de la barra de título tiene acceso completo a su padre QDockWidget. Por lo tanto, puede realizar operaciones como acoplar y ocultar en respuesta a las acciones del usuario.

Véase también titleBarWidget() y DockWidgetVerticalTitleBar.

void QDockWidget::setWidget(QWidget *widget)

Establece el widget para el widget del dock en widget.

Si el widget del dock es visible cuando se añade widget, debes show() explícitamente.

Ten en cuenta que debes añadir el diseño del widget antes de llamar a esta función; si no, el widget no será visible.

Véase también widget().

QWidget *QDockWidget::titleBarWidget() const

Devuelve el widget de la barra de título personalizada establecido en QDockWidget, o nullptr si no se ha establecido ninguna barra de título personalizada.

Véase también setTitleBarWidget().

QAction *QDockWidget::toggleViewAction() const

Devuelve una acción comprobable que puede añadirse a menús y barras de herramientas para que el usuario pueda mostrar o cerrar este widget acoplable.

El texto de la acción se establece en el título de la ventana del widget.

El objeto QAction es propiedad de QDockWidget. Se borrará automáticamente cuando se destruya QDockWidget.

Nota: La acción no puede utilizarse para mostrar u ocultar mediante programación el widget del dock. Para ello, utilice la propiedad visible.

Véase también QAction::text y QWidget::windowTitle.

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

Esta señal se emite cuando cambia la propiedad floating. El parámetro topLevel es true si el widget del dock es ahora flotante; en caso contrario es false.

Nota: Señal notificadora para la propiedad floating.

Véase también isWindow().

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

Esta señal se emite cuando el widget del dock se vuelve visible (o invisible). Esto ocurre cuando el widget se oculta o se muestra, así como cuando está anclado en un área de anclaje con pestañas y su pestaña se selecciona o se deselecciona.

Nota: La señal puede diferir de QWidget::isVisible(). Este puede ser el caso, si un widget del dock se minimiza o tabula y se asocia a una pestaña no seleccionada o inactiva.

QWidget *QDockWidget::widget() const

Devuelve el widget para el widget del dock. Esta función devuelve cero si no se ha establecido el widget.

Véase también 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.