Spec-Zone.ru › Qt 5.14

Класс QMdiArea

Виджет QMdiArea предоставляет область, в которой отображаются окна MDI. Подробнее...

Заголовок: #include <QMdiArea>
qmake: QT += widgets
С момента: Qt 4.3
Наследует: QAbstractScrollArea

Этот класс был представлен в Qt 4.3.

  • Список всех членов, включая унаследованные

Открытые типы

Перечисление AreaOption { DontMaximizeSubWindowOnActivation }
Флаги AreaOptions
Перечисление ViewMode { SubWindowView, TabbedView }
Перечисление WindowOrder { CreationOrder, StackingOrder, ActivationHistoryOrder }

Свойства

  • activationOrder : WindowOrder
  • background : QBrush
  • documentMode : bool
  • tabPosition : QTabWidget::TabPosition
  • tabShape : QTabWidget::TabShape
  • tabsClosable : bool
  • tabsMovable : bool
  • viewMode : ViewMode

Открытые функции

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

Реализованные общедоступные функции

virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override

Общедоступные слоты

void activateNextSubWindow()
void activatePreviousSubWindow()
void cascadeSubWindows()
void closeActiveSubWindow()
void closeAllSubWindows()
void setActiveSubWindow(QMdiSubWindow *window)
void tileSubWindows()

Сигналы

void subWindowActivated(QMdiSubWindow *window)

Реализованные защищенные функции

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

Защищенные слоты

virtual void setupViewport(QWidget *viewport) override

Подробное описание

Класс 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

Это свойство указывает, включён ли режим документа для вкладки.

Режим документа по умолчанию выключен.

Это свойство было добавлено в 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

Это свойство указывает, может ли пользователь перемещать вкладки в области вкладок в режиме отображения вкладок.

Вкладки по умолчанию не перемещаются.

Это свойство было добавлено в 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.

void QMdiArea::activateNextSubWindow()

Передаёт фокус клавиатуры другому окну в списке дочерних окон. Активируемое окно будет следующим, определённым текущим порядком активации.

См. также activatePreviousSubWindow() и QMdiArea::WindowOrder.

void QMdiArea::activatePreviousSubWindow()

Передаёт фокус клавиатуры другому окну в списке дочерних окон. Активируемое окно будет предыдущим, определённым текущим порядком активации.

См. также activateNextSubWindow() и QMdiArea::WindowOrder.

void QMdiArea::cascadeSubWindows()

Устанавливает все дочерние окна в каскадном расположении.

См. также tileSubWindows().

void QMdiArea::closeActiveSubWindow()

Закрывает активное дочернее окно.

См. также closeAllSubWindows().

void QMdiArea::closeAllSubWindows()

Закрывает все дочерние окна, отправляя QCloseEvent в каждое окно. Вы можете получить сигналы subWindowActivated() от дочерних окон, прежде чем они будут закрыты (если область MDI активирует дочернее окно, пока другое закрывается).

Дочерние окна, игнорирующие событие закрытия, останутся открытыми.

См. также closeActiveSubWindow().

void QMdiArea::setActiveSubWindow(QMdiSubWindow *window)

Активирует дочернее окно window. Если window равно nullptr, любое текущее активное окно деактивируется.

См. также activeSubWindow().

void QMdiArea::setupViewport(QWidget *viewport)

Переопределяет: QAbstractScrollArea::setupViewport(QWidget *viewport).

Этот слот вызывается QAbstractScrollArea после вызова setViewport(). Переопределите эту функцию в подклассе QMdiArea, чтобы инициализировать новый viewport, прежде чем он будет использован.

См. также setViewport().

void QMdiArea::subWindowActivated(QMdiSubWindow *window)

QMdiArea излучает этот сигнал после активации window. Когда window равно 0, QMdiArea только что деактивировал своё последнее активное окно, и активных окон в рабочей области нет.

См. также QMdiArea::activeSubWindow().

[slot] void QMdiArea::tileSubWindows()

Размещает все дочерние окна в виде плитки.

См. также cascadeSubWindows().

[virtual] QMdiArea::~QMdiArea()

Уничтожает область MDI.

QMdiSubWindow *QMdiArea::activeSubWindow() const

Возвращает указатель на текущее активное подокно. Если активного окна нет, возвращается nullptr.

Поддочерние окна рассматриваются как окна верхнего уровня относительно состояния окна, т. е. если активным окном является виджет вне области MDI, ни одно подокно не будет активным. Обратите внимание, что если виджет в окне, в котором находится область MDI, получает фокус, окно будет активировано.

См. также setActiveSubWindow() и Qt::WindowState.

QMdiSubWindow *QMdiArea::addSubWindow(QWidget *widget, Qt::WindowFlags windowFlags = Qt::WindowFlags())

Добавляет widget как новое подокно в область MDI. Если windowFlags не равны нулю, они переопределяют флаги, установленные для виджета.

widget может быть либо QMdiSubWindow, либо другим QWidget (в этом случае область MDI создаст подокно и установит widget в качестве внутреннего виджета).

Примечание: После добавления подокна его родителем станет viewport 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().

[override virtual protected] void QMdiArea::childEvent(QChildEvent *childEvent)

Переопределяет: QObject::childEvent(QChildEvent *event).

QMdiSubWindow *QMdiArea::currentSubWindow() const

Возвращает указатель на текущее подокно или nullptr, если текущего подокна нет.

Эта функция вернет то же самое, что и activeSubWindow(), если QApplication, содержащий QMdiArea, активен.

См. также activeSubWindow() и QApplication::activeWindow().

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

Переопределяет: QAbstractScrollArea::event(QEvent *event).

[override virtual protected] bool QMdiArea::eventFilter(QObject *object, QEvent *event)

Переопределяет: QObject::eventFilter(QObject *watched, QEvent *event).

[override virtual] QSize QMdiArea::minimumSizeHint() const

Переопределяет: QAbstractScrollArea::minimumSizeHint() const.

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

Переопределяет: QAbstractScrollArea::paintEvent(QPaintEvent *event).

void QMdiArea::removeSubWindow(QWidget *widget)

Удаляет widget из области MDI. widget должен быть либо QMdiSubWindow, либо виджетом, являющимся внутренним виджетом подокна. Обратите внимание, что widget никогда не удаляется самой областью QMdiArea. Если передается QMdiSubWindow, его родителем устанавливается nullptr, и он удаляется; но если передается внутренний виджет, виджет-потомок устанавливается в nullptr, и QMdiSubWindow не удаляется.

См. также addSubWindow().

[override virtual protected] void QMdiArea::resizeEvent(QResizeEvent *resizeEvent)

Переопределяет: QAbstractScrollArea::resizeEvent(QResizeEvent *event).

[override virtual protected] void QMdiArea::scrollContentsBy(int dx, int dy)

Переопределяет: QAbstractScrollArea::scrollContentsBy(int dx, int dy).

void QMdiArea::setOption(QMdiArea::AreaOption option, bool on = true)

Если on равно true, option включен в области MDI; в противном случае он отключен. См. AreaOption, чтобы увидеть эффект каждого параметра.

См. также AreaOption и testOption().

[override virtual protected] void QMdiArea::showEvent(QShowEvent *showEvent)

Переопределяет: QWidget::showEvent(QShowEvent *event).

[override virtual] QSize QMdiArea::sizeHint() const

Переопределяет: QAbstractScrollArea::sizeHint() const.

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().

[override virtual protected] void QMdiArea::timerEvent(QTimerEvent *timerEvent)

Переопределяет: QObject::timerEvent(QTimerEvent *event).

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

Переопределяет: QAbstractScrollArea::viewportEvent(QEvent *event).

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qmdiarea.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API