Класс QMdiArea
Виджет QMdiArea предоставляет область для отображения окон MDI. Подробнее...
| Заголовок: | #include <QMdiArea> |
| qmake: | QT += widgets |
| С версии: | Qt 4.3 |
| Наследует: | QAbstractScrollArea |
Открытые типы
| перечисление | AreaOption { DontMaximizeSubWindowOnActivation } |
| флаги | AreaOptions |
| перечисление | ViewMode { SubWindowView, TabbedView } |
| перечисление | WindowOrder { CreationOrder, StackingOrder, ActivationHistoryOrder } |
Свойства
|
|
- 3 свойства унаследованы от QAbstractScrollArea
- 6 свойств унаследованы от QFrame
- 59 свойств унаследованы от QWidget
- 1 свойство унаследовано от QObject
Открытые функции
| QMdiArea(QWidget *parent = nullptr) | |
| virtual | ~QMdiArea() |
| QMdiArea::WindowOrder | activationOrder() const |
| QMdiSubWindow * | activeSubWindow() const |
| QMdiSubWindow * | addSubWindow(QWidget *widget, Qt::WindowFlags 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) |
Переопределённые открытые функции
| виртуальный QSize | minimumSizeHint() const override |
| виртуальный QSize | sizeHint() const override |
- 20 общедоступных функций, унаследованных от QAbstractScrollArea
- 14 общедоступных функций, унаследованных от QFrame
- 214 общедоступных функций, унаследованных от QWidget
- 31 общедоступных функций, унаследованных от QObject
- 14 общедоступных функций, унаследованных от QPaintDevice
Общедоступные слоты
| void | активироватьСледующееПодОкно() |
| void | активироватьПредыдущееПодОкно() |
| void | каскадироватьПодОкна() |
| void | закрытьАктивноеПодОкно() |
| void | закрытьВсеПодОкна() |
| void | установитьАктивноеПодОкно(QMdiSubWindow *window) |
| void | разложитьПодОкна() |
Сигналы
| void | подОкноАктивировано(QMdiSubWindow *window) |
Статические общедоступные члены
| const QMetaObject | staticMetaObject |
- 5 статических общедоступных членов, унаследованных от QWidget
- 9 статических общедоступных членов, унаследованных от QObject
Переопределённые защищённые функции
| виртуальный void | childEvent(QChildEvent *childEvent) override |
| виртуальный bool | event(QEvent *event) override |
| виртуальный bool | eventFilter(QObject *object, QEvent *event) override |
| виртуальный void | paintEvent(QPaintEvent *paintEvent) override |
| виртуальный void | resizeEvent(QResizeEvent *resizeEvent) override |
| виртуальный void | scrollContentsBy(int dx, int dy) override |
| виртуальный void | showEvent(QShowEvent *showEvent) override |
| виртуальный void | timerEvent(QTimerEvent *timerEvent) override |
| виртуальный bool | viewportEvent(QEvent *event) override |
- 20 защищённых функций, унаследованных от QAbstractScrollArea
- 4 защищённых функций, унаследованных от QFrame
- 35 защищённых функций, унаследованных от QWidget
- 9 защищённых функций, унаследованных от QObject
- 1 защищённая функция, унаследованная от QPaintDevice
Защищённые слоты
| виртуальный void | setupViewport(QWidget *viewport) override |
- 1 защищённый слот, унаследованный от QWidget
Подробное описание
Виджет QMdiArea предоставляет область, в которой отображаются окна MDI.
QMdiArea, по сути, функционирует как менеджер окон для окон MDI. Например, он отрисовывает управляемые им окна на себе и организует их в каскадном или разложенном виде. QMdiArea обычно используется как центральный виджет в QMainWindow для создания приложений MDI, но также может быть размещён в любом макете. Следующий код добавляет область в главное окно:
QMainWindow *mainWindow = new QMainWindow;
mainWindow->setCentralWidget(mdiArea); В отличие от менеджеров окон верхнего уровня, все флаги окон (Qt::WindowFlags) поддерживаются QMdiArea, при условии что флаги поддерживаются текущей стилистикой виджета. Если определённый флаг не поддерживается стилем (например, WindowShadeButtonHint), вы всё равно можете затемнить окно с помощью showShaded().
Подокна в QMdiArea являются экземплярами QMdiSubWindow. Они добавляются в область MDI с помощью addSubWindow(). Обычно в эту функцию передаётся QWidget, который устанавливается как внутренний виджет, но также можно передать QMdiSubWindow напрямую. Класс наследуется от QWidget, и при программировании вы можете использовать тот же API, что и с обычным окном верхнего уровня. QMdiSubWindow также имеет поведение, специфичное для окон MDI. Дополнительные сведения см. в описании класса QMdiSubWindow.
ПодОкно становится активным, когда получает фокус клавиатуры или когда вызывается setFocus(). Пользователь активирует окно обычным способом. Область MDI излучает сигнал subWindowActivated() при изменении активного окна, и функция activeSubWindow() возвращает активное подОкно.
Удобная функция subWindowList() возвращает список всех подокон. Эта информация может использоваться, например, в всплывающем меню, содержащем список окон.
ПодОкна сортируются по текущему порядку WindowOrder. Это используется для subWindowList() и для activateNextSubWindow() и activatePreviousSubWindow(). Кроме того, это используется при каскадировании или разбиении окон с помощью cascadeSubWindows() и tileSubWindows().
QMdiArea предоставляет две встроенные стратегии макета для подокон: cascadeSubWindows() и tileSubWindows(). Оба являются слотами и легко подключаются к пунктам меню.
Примечание: Свойство полосы прокрутки по умолчанию для QMdiArea — Qt::ScrollBarAlwaysOff.
См. также QMdiSubWindow.
Документация по типам членов
перечисление QMdiArea::AreaOptionфлаги QMdiArea::AreaOptions
Это перечисление описывает параметры, которые настраивают поведение QMdiArea.
| Постоянная | Значение | Описание |
|---|---|---|
QMdiArea::DontMaximizeSubWindowOnActivation |
0x1 |
При максимализации активного подОкна, поведение по умолчанию — максимализация следующего активируемого подОкна. Установите этот параметр, если вы не хотите этого поведения. |
Тип AreaOptions является псевдонимом для QFlags<AreaOption>. Он хранит логическое ИЛИ сочетание значений AreaOption.
перечисление QMdiArea::ViewMode
Это перечисление описывает режим отображения области; т.е. как будут отображаться подОкна.
| Постоянная | Значение | Описание |
|---|---|---|
QMdiArea::SubWindowView |
0 |
ПодОкна отображаются с рамками (по умолчанию). |
QMdiArea::TabbedView |
1 |
ПодОкна отображаются с вкладками в строке вкладок. |
Это перечисление было введено или изменено в Qt 4.4.
См. также setViewMode().
перечисление QMdiArea::WindowOrder
Указывает критерии для упорядочивания списка дочерних окон, возвращаемых subWindowList(). Функции cascadeSubWindows() и tileSubWindows() следуют этому порядку при расположении окон.
| Постоянная | Значение | Описание |
|---|---|---|
QMdiArea::CreationOrder |
0 |
Окна возвращаются в порядке их создания. |
QMdiArea::StackingOrder |
1 |
Окна возвращаются в порядке их расположения в стеке, при этом верхнее окно находится последним в списке. |
QMdiArea::ActivationHistoryOrder |
2 |
Окна возвращаются в порядке их активации. |
См. также subWindowList().
Документация свойств
activationOrder : WindowOrder
Это свойство хранит критерии упорядочивания списков подокна
Это свойство задаёт критерии упорядочения списка подокон, возвращаемого методом subWindowList(). По умолчанию используется порядок создания окон.
Это свойство было добавлено в Qt 4.4.
Функции доступа:
| QMdiArea::WindowOrder | activationOrder() const |
| void | setActivationOrder(QMdiArea::WindowOrder order) |
См. также subWindowList().
background : QBrush
Это свойство содержит кисть фона для рабочей области
Это свойство задаёт кисть фона для самой области рабочей области. По умолчанию используется серый цвет, но может быть любой кистью (например, цвета, градиенты или растровые изображения).
Функции доступа:
| QBrush | background() const |
| void | setBackground(const QBrush &background) |
documentMode : bool
Это свойство указывает, установлено ли свойство tab bar в режим документа в режиме отображения вкладок.
Режим документа по умолчанию отключен.
Это свойство было добавлено в Qt 4.5.
Функции доступа:
| bool | documentMode() const |
| void | setDocumentMode(bool enabled) |
См. также QTabBar::documentMode и setViewMode().
tabPosition : QTabWidget::TabPosition
Это свойство определяет позицию вкладок в режиме отображения вкладок.
Возможные значения для этого свойства описаны в перечислении QTabWidget::TabPosition.
Это свойство было добавлено в Qt 4.4.
Функции доступа:
| QTabWidget::TabPosition | tabPosition() const |
| void | setTabPosition(QTabWidget::TabPosition position) |
См. также QTabWidget::TabPosition и setViewMode().
tabShape : QTabWidget::TabShape
Это свойство определяет форму вкладок в режиме отображения вкладок.
Возможные значения для этого свойства — QTabWidget::Rounded (по умолчанию) или QTabWidget::Triangular.
Это свойство было добавлено в Qt 4.4.
Функции доступа:
| QTabWidget::TabShape | tabShape() const |
| void | setTabShape(QTabWidget::TabShape shape) |
См. также QTabWidget::TabShape и setViewMode().
tabsClosable : bool
Это свойство указывает, должны ли на каждой вкладке в режиме отображения вкладок отображаться кнопки закрытия.
Вкладки по умолчанию не закрываются.
Это свойство было добавлено в Qt 4.8.
Функции доступа:
| bool | tabsClosable() const |
| void | setTabsClosable(bool closable) |
См. также QTabBar::tabsClosable и setViewMode().
tabsMovable : bool
Это свойство указывает, может ли пользователь перемещать вкладки в области tabbar в режиме отображения вкладок.
Вкладки по умолчанию не перемещаются.
Это свойство было добавлено в Qt 4.8.
Функции доступа:
| bool | tabsMovable() const |
| void | setTabsMovable(bool movable) |
См. также QTabBar::movable и setViewMode().
viewMode : ViewMode
Это свойство определяет способ отображения под-окон в QMdiArea.
По умолчанию используется режим SubWindowView для отображения под-окон.
Это свойство было добавлено в Qt 4.4.
Функции доступа:
| QMdiArea::ViewMode | viewMode() const |
| void | setViewMode(QMdiArea::ViewMode mode) |
См. также ViewMode, setTabShape() и setTabPosition().
Документация по членам функций
QMdiArea::QMdiArea(QWidget *parent = nullptr)
Создаёт пустую область MDI. parent передаётся конструктору QWidget.
[virtual] QMdiArea::~QMdiArea()
Удаляет область MDI.
[slot] void QMdiArea::activateNextSubWindow()
Передаёт фокус клавиатуры другому окну в списке дочерних окон. Активируемое окно будет следующим, определяемым текущим порядком активации.
См. также activatePreviousSubWindow() и QMdiArea::WindowOrder.
[slot] void QMdiArea::activatePreviousSubWindow()
Передаёт фокус клавиатуры другому окну в списке дочерних окон. Активируемое окно будет предыдущим, определяемым текущим порядком активации.
См. также activateNextSubWindow() и QMdiArea::WindowOrder.
QMdiSubWindow *QMdiArea::activeSubWindow() const
Возвращает указатель на текущее активное под-окно. Если активного окна нет, возвращается 0.
Под-окна рассматриваются как окна верхнего уровня с точки зрения состояния окна, т.е., если активным окном является виджет вне области MDI, под-окно не будет активным. Обратите внимание, что если виджет в окне, в котором находится область MDI, получает фокус, окно будет активировано.
См. также setActiveSubWindow() и Qt::WindowState.
QMdiSubWindow *QMdiArea::addSubWindow(QWidget *widget, Qt::WindowFlags windowFlags = ...)
Добавляет widget в качестве нового под-окна в область MDI. Если windowFlags отличны от нуля, они переопределят флаги, установленные на виджете.
widget может быть как QMdiSubWindow, так и другим QWidget (в этом случае область MDI создаст под-окно и установит widget в качестве внутреннего виджета).
Примечание: После добавления под-окна его родителем будет виджет-представление QMdiArea.
QMdiArea mdiArea;
QMdiSubWindow *subWindow1 = new QMdiSubWindow;
subWindow1->setWidget(internalWidget1);
subWindow1->setAttribute(Qt::WA_DeleteOnClose);
mdiArea.addSubWindow(subWindow1);
QMdiSubWindow *subWindow2 =
mdiArea.addSubWindow(internalWidget2); При создании собственного под-окна необходимо установить атрибут виджета Qt::WA_DeleteOnClose, если вы хотите, чтобы окно удалялось при закрытии в области MDI. В противном случае окно будет скрыто, и область MDI не активирует следующее под-окно.
Возвращает QMdiSubWindow, который добавлен в область MDI.
См. также removeSubWindow().
[slot] void QMdiArea::cascadeSubWindows()
Располагает все дочерние окна в виде каскада.
См. также tileSubWindows().
[override virtual protected] void QMdiArea::childEvent(QChildEvent *childEvent)
Переопределено из QObject::childEvent().
[slot] void QMdiArea::closeActiveSubWindow()
Закрывает активное под-окно.
См. также closeAllSubWindows().
[slot] void QMdiArea::closeAllSubWindows()
Закрывает все дочерние окна, отправляя QCloseEvent каждому окну. Вы можете получить сигналы subWindowActivated() от дочерних окон перед их закрытием (если область MDI активирует дочернее окно, когда другое закрывается).
Дочерние окна, которые игнорируют событие закрытия, останутся открытыми.
См. также closeActiveSubWindow().
QMdiSubWindow *QMdiArea::currentSubWindow() const
Возвращает указатель на текущее дочернее окно или 0, если текущего дочернего окна нет.
Эта функция вернёт то же, что и activeSubWindow(), если приложение QApplication, содержащее QMdiArea, активно.
См. также activeSubWindow() и QApplication::activeWindow().
[override virtual protected] bool QMdiArea::event(QEvent *event)
Переопределено из QAbstractScrollArea::event().
[override virtual protected] bool QMdiArea::eventFilter(QObject *object, QEvent *event)
[override virtual] QSize QMdiArea::minimumSizeHint() const
Переопределено из QAbstractScrollArea::minimumSizeHint().
[override virtual protected] void QMdiArea::paintEvent(QPaintEvent *paintEvent)
Переопределено из QAbstractScrollArea::paintEvent().
void QMdiArea::removeSubWindow(QWidget *widget)
Удаляет widget из области MDI. widget должен быть либо QMdiSubWindow, либо виджетом, являющимся внутренним виджетом дочернего окна. Обратите внимание, что widget никогда не удаляется непосредственно классом QMdiArea. Если передан QMdiSubWindow, его родитель устанавливается в 0, и он удаляется, но если передан внутренний виджет, дочерний виджет устанавливается в 0, но QMdiSubWindow не удаляется.
См. также addSubWindow().
[override virtual protected] void QMdiArea::resizeEvent(QResizeEvent *resizeEvent)
Переопределено из QAbstractScrollArea::resizeEvent().
[override virtual protected] void QMdiArea::scrollContentsBy(int dx, int dy)
Переопределено из QAbstractScrollArea::scrollContentsBy().
[slot] void QMdiArea::setActiveSubWindow(QMdiSubWindow *window)
Активирует дочернее окно window. Если window равен 0, любое текущее активное окно деактивируется.
См. также activeSubWindow().
void QMdiArea::setOption(QMdiArea::AreaOption option, bool on = true)
Если on равно true, option включено в области MDI; в противном случае — выключено. См. AreaOption для эффекта каждого параметра.
См. также AreaOption и testOption().
[override virtual protected slot] void QMdiArea::setupViewport(QWidget *viewport)
Переопределено из QAbstractScrollArea::setupViewport().
Этот слот вызывается QAbstractScrollArea после вызова setViewport(). Переопределите эту функцию в подклассе QMdiArea, чтобы инициализировать новый viewport перед его использованием.
См. также setViewport().
[override virtual protected] void QMdiArea::showEvent(QShowEvent *showEvent)
Переопределено из QWidget::showEvent().
[override virtual] QSize QMdiArea::sizeHint() const
Переопределено из QAbstractScrollArea::sizeHint().
[signal] void QMdiArea::subWindowActivated(QMdiSubWindow *window)
QMdiArea испускает этот сигнал после активации window. Когда window равен 0, QMdiArea только что деактивировал последнее активное окно, и нет активных окон на рабочем пространстве.
См. также QMdiArea::activeSubWindow().
QList<QMdiSubWindow *> QMdiArea::subWindowList(QMdiArea::WindowOrder order = CreationOrder) const
Возвращает список всех дочерних окон в области MDI. Если order равен CreationOrder (по умолчанию), окна упорядочены в соответствии с порядком их добавления в рабочее пространство. Если order равен StackingOrder, окна перечислены в порядке их расположения, причём верхнее окно — это последний элемент в списке. Если order равен ActivationHistoryOrder, окна перечислены в соответствии с их последней историей активации.
См. также WindowOrder.
bool QMdiArea::testOption(QMdiArea::AreaOption option) const
Возвращает true если option включено; в противном случае возвращает false.
См. также AreaOption и setOption().
[slot] void QMdiArea::tileSubWindows()
Располагает все дочерние окна в виде плитки.
См. также cascadeSubWindows().
[override virtual protected] void QMdiArea::timerEvent(QTimerEvent *timerEvent)
Переопределено из QObject::timerEvent().
[override virtual protected] bool QMdiArea::viewportEvent(QEvent *event)
Переопределено из QAbstractScrollArea::viewportEvent().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qmdiarea.html