QMdiArea Class
El widget QMdiArea proporciona un área en la que se muestran las ventanas MDI. Más...
| Cabecera: | #include <QMdiArea> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets)target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Hereda: | QAbstractScrollArea |
Tipos públicos
| enum | AreaOption { DontMaximizeSubWindowOnActivation } |
| flags | AreaOptions |
| enum | ViewMode { SubWindowView, TabbedView } |
| enum | WindowOrder { CreationOrder, StackingOrder, ActivationHistoryOrder } |
Propiedades
|
|
Funciones públicas
| QMdiArea(QWidget *parent = nullptr) | |
| virtual | ~QMdiArea() |
| QMdiArea::WindowOrder | activationOrder() const |
| QMdiSubWindow * | activeSubWindow() const |
| QMdiSubWindow * | addSubWindow(QWidget *widget, Qt::WindowFlags windowFlags = Qt::WindowFlags()) |
| QBrush | background() const |
| QMdiSubWindow * | currentSubWindow() const |
| bool | documentMode() const |
| void | removeSubWindow(QWidget *widget) |
| void | setActivationOrder(QMdiArea::WindowOrder order) |
| void | setBackground(const QBrush &background) |
| void | setDocumentMode(bool enabled) |
| void | setOption(QMdiArea::AreaOption option, bool on = true) |
| void | setTabPosition(QTabWidget::TabPosition position) |
| void | setTabShape(QTabWidget::TabShape shape) |
| void | setTabsClosable(bool closable) |
| void | setTabsMovable(bool movable) |
| void | setViewMode(QMdiArea::ViewMode mode) |
| QList<QMdiSubWindow *> | subWindowList(QMdiArea::WindowOrder order = CreationOrder) const |
| QTabWidget::TabPosition | tabPosition() const |
| QTabWidget::TabShape | tabShape() const |
| bool | tabsClosable() const |
| bool | tabsMovable() const |
| bool | testOption(QMdiArea::AreaOption option) const |
| QMdiArea::ViewMode | viewMode() const |
Funciones públicas reimplementadas
| virtual QSize | minimumSizeHint() const override |
| virtual QSize | sizeHint() const override |
Ranuras públicas
| void | activateNextSubWindow() |
| void | activatePreviousSubWindow() |
| void | cascadeSubWindows() |
| void | closeActiveSubWindow() |
| void | closeAllSubWindows() |
| void | setActiveSubWindow(QMdiSubWindow *window) |
| void | tileSubWindows() |
Señales
| void | subWindowActivated(QMdiSubWindow *window) |
Funciones protegidas reimplementadas
| virtual void | childEvent(QChildEvent *childEvent) override |
| virtual bool | event(QEvent *event) override |
| virtual bool | eventFilter(QObject *object, QEvent *event) override |
| virtual void | paintEvent(QPaintEvent *paintEvent) override |
| virtual void | resizeEvent(QResizeEvent *resizeEvent) override |
| virtual void | scrollContentsBy(int dx, int dy) override |
| virtual void | showEvent(QShowEvent *showEvent) override |
| virtual void | timerEvent(QTimerEvent *timerEvent) override |
| virtual bool | viewportEvent(QEvent *event) override |
Ranuras protegidas
| virtual void | setupViewport(QWidget *viewport) override |
Descripción Detallada
QMdiArea funciona, esencialmente, como un gestor de ventanas MDI. Por ejemplo, dibuja las ventanas que gestiona sobre sí mismo y las organiza en un patrón de cascada o mosaico. QMdiArea se utiliza habitualmente como widget central en QMainWindow para crear aplicaciones MDI, pero también puede colocarse en cualquier diseño. El siguiente código añade un área a una ventana principal:
QMainWindow *mainWindow = new QMainWindow; mainWindow->setCentralWidget(mdiArea);
A diferencia de los gestores de ventanas de nivel superior, todas las banderas de ventana (Qt::WindowFlags) son soportadas por QMdiArea siempre y cuando las banderas sean soportadas por el estilo de widget actual.
Las subventanas en QMdiArea son instancias de QMdiSubWindow. Se añaden a un área MDI con addSubWindow(). Es habitual pasar un QWidget, que se establece como widget interno, a esta función, pero también es posible pasar un QMdiSubWindow directamente. La clase hereda QWidget, y se puede utilizar la misma API que con una ventana normal de nivel superior cuando se programa. QMdiSubWindow también tiene un comportamiento que es específico de las ventanas MDI. Consulte la descripción de la clase QMdiSubWindow para obtener más detalles.
Una subventana se activa cuando obtiene el foco del teclado, o cuando se llama a setFocus(). El usuario activa una ventana moviendo el foco de la forma habitual. El área MDI emite la señal subWindowActivated() cuando cambia la ventana activa, y la función activeSubWindow() devuelve la subventana activa.
La función de conveniencia subWindowList() devuelve una lista de todas las subventanas. Esta información puede utilizarse, por ejemplo, en un menú emergente que contenga una lista de ventanas.
Las subventanas se ordenan por la WindowOrder actual. Se utiliza para subWindowList() y para activateNextSubWindow() y activatePreviousSubWindow(). También se utiliza cuando se ordenan las ventanas en cascada o en mosaico con cascadeSubWindows() y tileSubWindows().
QMdiArea proporciona dos estrategias de diseño incorporadas para las subventanas: cascadeSubWindows() y tileSubWindows(). Ambas son ranuras y se conectan fácilmente a las entradas de menú.
![]() | ![]() |
Nota: La propiedad por defecto de la barra de desplazamiento para QMdiArea es Qt::ScrollBarAlwaysOff.
Véase también QMdiSubWindow.
Documentación de tipos de miembros
enum QMdiArea::AreaOption
banderas QMdiArea::AreaOptions
Este enum describe opciones que personalizan el comportamiento de QMdiArea.
| Constante | Valor | Descripción |
|---|---|---|
QMdiArea::DontMaximizeSubWindowOnActivation | 0x1 | Cuando se maximiza la subventana activa, el comportamiento por defecto es maximizar la siguiente subventana que se active. Establezca esta opción si no desea este comportamiento. |
El tipo AreaOptions es un typedef para QFlags<AreaOption>. Almacena una combinación OR de valores AreaOption.
enum QMdiArea::ViewMode
Este enum describe el modo de visualización del área; es decir, cómo se mostrarán las subventanas.
| Constante | Valor | Descripción |
|---|---|---|
QMdiArea::SubWindowView | 0 | Mostrar subventanas con marcos de ventana (por defecto). |
QMdiArea::TabbedView | 1 | Mostrar subventanas con pestañas en una barra de pestañas. |
Véase también setViewMode().
enum QMdiArea::WindowOrder
Especifica el criterio a utilizar para ordenar la lista de ventanas hijas devuelta por subWindowList(). Las funciones cascadeSubWindows() y tileSubWindows() siguen este orden al ordenar las ventanas.
| Constante | Valor | Descripción |
|---|---|---|
QMdiArea::CreationOrder | 0 | Las ventanas se devuelven en el orden de su creación. |
QMdiArea::StackingOrder | 1 | Las ventanas se devuelven en el orden en que se apilan, siendo la ventana superior la última de la lista. |
QMdiArea::ActivationHistoryOrder | 2 | Las ventanas se devuelven en el orden en que se activaron. |
Véase también subWindowList().
Documentación de propiedades
activationOrder : WindowOrder
Esta propiedad contiene los criterios de ordenación para las listas de subventanas
Esta propiedad especifica el criterio de ordenación para la lista de subventanas devuelta por subWindowList(). Por defecto, es el orden de creación de la ventana.
Funciones de acceso:
| QMdiArea::WindowOrder | activationOrder() const |
| void | setActivationOrder(QMdiArea::WindowOrder order) |
Véase también subWindowList().
background : QBrush
Esta propiedad mantiene el pincel de fondo para el área de trabajo
Esta propiedad establece el pincel de fondo para el área del espacio de trabajo. Por defecto, es un color gris, pero puede ser cualquier pincel (por ejemplo, colores, gradientes o pixmaps).
Funciones de acceso:
| QBrush | background() const |
| void | setBackground(const QBrush &background) |
documentMode : bool
Esta propiedad indica si la barra de pestañas está en modo documento en el modo de vista por pestañas.
El modo documento está desactivado por defecto.
Funciones de acceso:
| bool | documentMode() const |
| void | setDocumentMode(bool enabled) |
Véase también QTabBar::documentMode y setViewMode().
tabPosition : QTabWidget::TabPosition
Esta propiedad contiene la posición de las pestañas en el modo de vista por pestañas.
Los posibles valores de esta propiedad se describen en el enum QTabWidget::TabPosition.
Funciones de acceso:
| QTabWidget::TabPosition | tabPosition() const |
| void | setTabPosition(QTabWidget::TabPosition position) |
Véase también QTabWidget::TabPosition y setViewMode().
tabShape : QTabWidget::TabShape
Esta propiedad mantiene la forma de las pestañas en el modo de vista por pestañas.
Los valores posibles para esta propiedad son QTabWidget::Rounded (por defecto) o QTabWidget::Triangular.
Funciones de acceso:
| QTabWidget::TabShape | tabShape() const |
| void | setTabShape(QTabWidget::TabShape shape) |
Véase también QTabWidget::TabShape y setViewMode().
tabsClosable : bool
Esta propiedad establece si la barra de pestañas debe colocar botones de cierre en cada pestaña en el modo de vista por pestañas.
Las pestañas no se pueden cerrar por defecto.
Funciones de acceso:
| bool | tabsClosable() const |
| void | setTabsClosable(bool closable) |
Véase también QTabBar::tabsClosable y setViewMode().
tabsMovable : bool
Esta propiedad indica si el usuario puede mover las pestañas dentro del área de la barra de pestañas en el modo de vista por pestañas.
Por defecto, las pestañas no se pueden mover.
Funciones de acceso:
| bool | tabsMovable() const |
| void | setTabsMovable(bool movable) |
Véase también QTabBar::movable y setViewMode().
viewMode : ViewMode
Esta propiedad determina la forma en que se muestran las subventanas en QMdiArea.
Por defecto, se utiliza SubWindowView para mostrar las subventanas.
Funciones de acceso:
| QMdiArea::ViewMode | viewMode() const |
| void | setViewMode(QMdiArea::ViewMode mode) |
Véase también ViewMode, setTabShape(), y setTabPosition().
Documentación de las funciones miembro
QMdiArea::QMdiArea(QWidget *parent = nullptr)
Construye un área mdi vacía. parent se pasa al constructor de QWidget.
[virtual noexcept] QMdiArea::~QMdiArea()
Destruye el área MDI.
[slot] void QMdiArea::activateNextSubWindow()
Da el foco del teclado a otra ventana de la lista de ventanas hijas. La ventana activada será la siguiente determinada por el activation order actual.
Véase también activatePreviousSubWindow() y QMdiArea::WindowOrder.
[slot] void QMdiArea::activatePreviousSubWindow()
Da el foco del teclado a otra ventana de la lista de ventanas hijas. La ventana activada será la anterior determinada por el activation order actual.
Véase también activateNextSubWindow() y QMdiArea::WindowOrder.
QMdiSubWindow *QMdiArea::activeSubWindow() const
Devuelve un puntero a la subventana activa en ese momento. Si no hay ninguna ventana activa, se devuelve nullptr.
Las subventanas se tratan como ventanas de nivel superior con respecto al estado de la ventana, es decir, si un widget fuera del área MDI es la ventana activa, ninguna subventana estará activa. Tenga en cuenta que si un widget de la ventana en la que vive el área MDI obtiene el foco, la ventana se activará.
Véase también setActiveSubWindow() y Qt::WindowState.
QMdiSubWindow *QMdiArea::addSubWindow(QWidget *widget, Qt::WindowFlags windowFlags = Qt::WindowFlags())
Añade widget como una nueva subventana al área MDI. Si windowFlags es distinto de cero, anulará las banderas establecidas en el widget.
El widget puede ser un QMdiSubWindow u otro QWidget (en cuyo caso el área MDI creará una subventana y establecerá el widget como widget interno).
Nota: Una vez añadida la subventana, su padre será el widget viewport del QMdiArea.
QMdiArea mdiArea; QMdiSubWindow *subWindow1 = new QMdiSubWindow; subWindow1->setWidget(internalWidget1); subWindow1->setAttribute(Qt::WA_DeleteOnClose); mdiArea.addSubWindow(subWindow1); QMdiSubWindow *subWindow2 = mdiArea.addSubWindow(internalWidget2);
Cuando cree su propia subventana, deberá establecer el atributo de widget Qt::WA_DeleteOnClose si desea que la ventana se elimine cuando se cierre en el área MDI. De lo contrario, la ventana se ocultará y el área MDI no activará la siguiente subventana.
Devuelve el QMdiSubWindow que se añade al área MDI.
Véase también removeSubWindow().
[slot] void QMdiArea::cascadeSubWindows()
Ordena todas las ventanas hijas en cascada.
Véase también tileSubWindows().
[override virtual protected] void QMdiArea::childEvent(QChildEvent *childEvent)
Reimplementa: QObject::childEvent(QChildEvent *event).
[slot] void QMdiArea::closeActiveSubWindow()
Cierra la subventana activa.
Véase también closeAllSubWindows().
[slot] void QMdiArea::closeAllSubWindows()
Cierra todas las subventanas enviando un QCloseEvent a cada una de ellas. Puede recibir señales subWindowActivated() de las subventanas antes de que se cierren (si el área MDI activa la subventana cuando otra se está cerrando).
Las subventanas que ignoren el evento de cierre permanecerán abiertas.
Véase también closeActiveSubWindow().
QMdiSubWindow *QMdiArea::currentSubWindow() const
Devuelve un puntero a la subventana actual, o nullptr si no hay subventana actual.
Esta función devolverá lo mismo que activeSubWindow() si la QApplication que contiene QMdiArea está activa.
Véase también activeSubWindow() y QApplication::activeWindow().
[override virtual protected] bool QMdiArea::event(QEvent *event)
Reimplementa: QAbstractScrollArea::event(QEvent *event).
[override virtual protected] bool QMdiArea::eventFilter(QObject *object, QEvent *event)
Reimplementa: QObject::eventFilter(QObject *watched, QEvent *event).
[override virtual] QSize QMdiArea::minimumSizeHint() const
Reimplementa: QAbstractScrollArea::minimumSizeHint() const.
[override virtual protected] void QMdiArea::paintEvent(QPaintEvent *paintEvent)
Reimplementa: QAbstractScrollArea::paintEvent(QPaintEvent *event).
void QMdiArea::removeSubWindow(QWidget *widget)
Elimina widget del área MDI. El widget debe ser un QMdiSubWindow o un widget que sea el widget interno de una subventana. Tenga en cuenta que widget nunca es eliminado por QMdiArea. Si se pasa un QMdiSubWindow, su padre se establece en nullptr y se elimina; pero si se pasa un widget interno, el widget hijo se establece en nullptr y el QMdiSubWindow no se elimina.
Véase también addSubWindow().
[override virtual protected] void QMdiArea::resizeEvent(QResizeEvent *resizeEvent)
Reimplementa: QAbstractScrollArea::resizeEvent(QResizeEvent *event).
[override virtual protected] void QMdiArea::scrollContentsBy(int dx, int dy)
Reimplementa: QAbstractScrollArea::scrollContentsBy(int dx, int dy).
[slot] void QMdiArea::setActiveSubWindow(QMdiSubWindow *window)
Activa la subventana window. Si window es nullptr, se desactiva cualquier ventana activa en ese momento.
Véase también activeSubWindow().
void QMdiArea::setOption(QMdiArea::AreaOption option, bool on = true)
Si on es verdadero, option se activa en el área MDI; en caso contrario, se desactiva. Consulte AreaOption para conocer el efecto de cada opción.
Véase también AreaOption y testOption().
[override virtual protected slot] void QMdiArea::setupViewport(QWidget *viewport)
Reimplementa: QAbstractScrollArea::setupViewport(QWidget *viewport).
Este slot es llamado por QAbstractScrollArea después de que setViewport() haya sido llamado. Reimplemente esta función en una subclase de QMdiArea para inicializar el nuevo viewport antes de usarlo.
Ver también setViewport().
[override virtual protected] void QMdiArea::showEvent(QShowEvent *showEvent)
Reimplementa: QWidget::showEvent(QShowEvent *event).
[override virtual] QSize QMdiArea::sizeHint() const
Reimplementa: QAbstractScrollArea::sizeHint() const.
[signal] void QMdiArea::subWindowActivated(QMdiSubWindow *window)
QMdiArea emite esta señal después de que window se haya activado. Cuando window es nullptr, QMdiArea acaba de desactivar su última ventana activa, y no hay ventanas activas en el espacio de trabajo.
Véase también QMdiArea::activeSubWindow().
QList<QMdiSubWindow *> QMdiArea::subWindowList(QMdiArea::WindowOrder order = CreationOrder) const
Devuelve una lista de todas las subventanas del área MDI. Si order es CreationOrder (el valor predeterminado), las ventanas se ordenan en el orden en que se insertaron en el área de trabajo. Si order es StackingOrder, las ventanas se enumeran en su orden de apilamiento, con la ventana superior como último elemento de la lista. Si order es ActivationHistoryOrder, las ventanas se ordenan según su historial de activación reciente.
Véase también WindowOrder.
bool QMdiArea::testOption(QMdiArea::AreaOption option) const
Devuelve true si option está habilitado; en caso contrario devuelve false.
Véase también AreaOption y setOption().
[slot] void QMdiArea::tileSubWindows()
Ordena todas las ventanas hijas en forma de mosaico.
Véase también cascadeSubWindows().
[override virtual protected] void QMdiArea::timerEvent(QTimerEvent *timerEvent)
Reimplementa: QObject::timerEvent(QTimerEvent *event).
[override virtual protected] bool QMdiArea::viewportEvent(QEvent *event)
Reimplementa: QAbstractScrollArea::viewportEvent(QEvent *event).
© 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.

