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.

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
| Constante | Valor | Descripción |
|---|---|---|
QDockWidget::DockWidgetClosable | 0x01 | El widget de muelle puede cerrarse. |
QDockWidget::DockWidgetMovable | 0x02 | El widget de muelle puede ser movido entre muelles por el usuario. |
QDockWidget::DockWidgetFloatable | 0x04 | El widget del dock puede separarse de la ventana principal y flotar como una ventana independiente. |
QDockWidget::DockWidgetVerticalTitleBar | 0x08 | El widget del dock muestra una barra de título vertical en su parte izquierda. Puede utilizarse para aumentar el espacio vertical en QMainWindow. |
QDockWidget::NoDockWidgetFeatures | 0x00 | El 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.