Класс QMdiSubWindow
Класс QMdiSubWindow предоставляет класс подокна для QMdiArea. Подробнее...
| Заголовок: | #include <QMdiSubWindow> |
| qmake: | QT += widgets |
| С тех пор: | Qt 4.3 |
| Наследует: | QWidget |
Этот класс был представлен в Qt 4.3.
Типы публичного доступа
| Перечисление | SubWindowOption { RubberBandResize, RubberBandMove } |
| флаги | SubWindowOptions |
Свойства
- keyboardPageStep : int
- keyboardSingleStep : int
Функции публичного доступа
| QMdiSubWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | |
| виртуальный | ~QMdiSubWindow() |
| bool | isShaded() const |
| int | keyboardPageStep() const |
| int | keyboardSingleStep() const |
| QMdiArea * | mdiArea() const |
| void | setKeyboardPageStep(int step) |
| void | setKeyboardSingleStep(int step) |
| void | setOption(QMdiSubWindow::SubWindowOption option, bool on = true) |
| void | setSystemMenu(QMenu *systemMenu) |
| void | setWidget(QWidget *widget) |
| QMenu * | systemMenu() const |
| bool | testOption(QMdiSubWindow::SubWindowOption option) const |
| QWidget * | widget() const |
Переопределённые функции публичного доступа
| виртуальный QSize | minimumSizeHint() const override |
| виртуальный QSize | sizeHint() const override |
Свойства публичного доступа
| void | showShaded() |
| void | showSystemMenu() |
Сигналы
| void | aboutToActivate() |
| void | windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState) |
Переопределённые защищённые функции
| виртуальный void | changeEvent(QEvent *changeEvent) override |
| виртуальный void | childEvent(QChildEvent *childEvent) override |
| виртуальный void | closeEvent(QCloseEvent *closeEvent) override |
| виртуальный void | contextMenuEvent(QContextMenuEvent *contextMenuEvent) override |
| виртуальный bool | event(QEvent *event) override |
| виртуальный bool | eventFilter(QObject *object, QEvent *event) override |
| виртуальный void | focusInEvent(QFocusEvent *focusInEvent) override |
| виртуальный void | focusOutEvent(QFocusEvent *focusOutEvent) override |
| виртуальный void | hideEvent(QHideEvent *hideEvent) override |
| виртуальный void | keyPressEvent(QKeyEvent *keyEvent) override |
| виртуальный void | leaveEvent(QEvent *leaveEvent) override |
| виртуальный void | mouseDoubleClickEvent(QMouseEvent *mouseEvent) override |
| виртуальный void | mouseMoveEvent(QMouseEvent *mouseEvent) override |
| виртуальный void | mousePressEvent(QMouseEvent *mouseEvent) override |
| виртуальный void | mouseReleaseEvent(QMouseEvent *mouseEvent) override |
| виртуальный void | moveEvent(QMoveEvent *moveEvent) override |
| виртуальный void | paintEvent(QPaintEvent *paintEvent) override |
| виртуальный void | resizeEvent(QResizeEvent *resizeEvent) override |
| виртуальный void | showEvent(QShowEvent *showEvent) override |
| виртуальный void | timerEvent(QTimerEvent *timerEvent) override |
Подробное описание
QMdiSubWindow представляет собой окно верхнего уровня в QMdiArea и состоит из строчки заголовка с элементами оформления окна, внутреннего виджета и (в зависимости от текущего стиля) рамки окна и маркера размера. QMdiSubWindow имеет собственную компоновку, которая состоит из строчки заголовка и центральной области для внутреннего виджета.
Наиболее распространённый способ создания QMdiSubWindow — вызов QMdiArea::addSubWindow() с внутренним виджетом в качестве аргумента. Вы также можете создать подокно самостоятельно и установить внутренний виджет, вызвав setWidget().
При программировании с подокнами используется тот же API, что и с обычными окнами верхнего уровня (например, можно вызывать функции, такие как show(), hide(), showMaximized() и setWindowTitle()).
Обработка подoкoн
QMdiSubWindow также поддерживает поведение, специфичное для подoкoн в области MDI.
По умолчанию каждый QMdiSubWindow виден внутри области просмотра MDI-области при перемещении, но также можно указать поведение прозрачного перемещения и изменения размера окна, где во время этих операций обновляется только контур подокна. Функция setOption() используется для включения этого поведения.
Функция isShaded() определяет, является ли подокно в настоящее время затемнённым (т.е., окно свёрнуто так, что видна только строка заголовка). Для перехода в режим затемнения вызовите showShaded(). QMdiSubWindow излучает сигнал windowStateChanged() всякий раз, когда состояние окна изменяется (например, когда окно сворачивается или восстанавливается). Он также излучает aboutToActivate() перед активацией.
В режиме взаимодействия с клавиатурой окна перемещаются и изменяются в размерах с помощью клавиатуры. Вы можете перейти в этот режим через системное меню окна. Свойства keyboardSingleStep и keyboardPageStep управляют расстоянием, на которое перемещается или изменяется размер виджета для каждого события нажатия клавиши. При нажатой клавише Shift используется шаг страницы, в противном случае используется одиночный шаг.
Вы также можете изменить активное окно с помощью клавиатуры. Нажав одновременно клавиши Control и Tab, будет активировано следующее (с использованием текущего WindowOrder) подокно. Нажав одновременно клавиши Control, Shift и Tab, вы активируете предыдущее окно. Это эквивалентно вызову activateNextSubWindow() и activatePreviousSubWindow(). Обратите внимание, что эти сочетания клавиш переопределяют глобальные сочетания клавиш, но не сочетания клавиш QMdiArea.
См. также QMdiArea.
Документация типов членов
enum QMdiSubWindow::SubWindowOptionflags QMdiSubWindow::SubWindowOptions
Этот перечисление описывает параметры, которые настраивают поведение QMdiSubWindow.
| Постоянная | Значение | Описание |
|---|---|---|
QMdiSubWindow::RubberBandResize |
0x4 |
Если вы включите этот параметр, для представления контура подокна будет использоваться резиновый прямоугольник, и пользователь будет изменять размер этого прямоугольника, а не самого подокна. В результате подокно сохраняет свои исходные положение и размер до завершения операции изменения размера, после чего оно получит единственное событие QResizeEvent. По умолчанию этот параметр выключен. |
QMdiSubWindow::RubberBandMove |
0x8 |
Если вы включите этот параметр, для представления контура подокна будет использоваться резиновый прямоугольник, и пользователь будет перемещать этот прямоугольник, а не само подокно. В результате подокно остается в своем исходном положении до завершения операции перемещения, после чего в окно отправляется событие QMoveEvent. По умолчанию этот параметр выключен. |
Тип SubWindowOptions является псевдонимом для QFlags<SubWindowOption>. Он хранит объединение значений SubWindowOption.
Документация свойств
keyboardPageStep : int
устанавливает расстояние, на которое виджет должен перемещаться или изменять свой размер при использовании клавиш страницы клавиатуры.
При работе в режиме взаимодействия с клавиатурой вы можете использовать стрелки и клавиши страниц для перемещения или изменения размера окна. Это свойство контролирует клавиши страниц. Обычный способ перехода в режим взаимодействия с клавиатурой — это открыть меню подокна и выбрать «изменить размер» или «переместить».
Значение по умолчанию для шага страницы клавиатуры — 20 пикселей.
Функции доступа:
| int | keyboardPageStep() const |
| void | setKeyboardPageStep(int step) |
См. также keyboardSingleStep.
keyboardSingleStep : int
устанавливает расстояние, на которое виджет должен перемещаться или изменять свой размер при использовании стрелок клавиатуры.
При работе в режиме взаимодействия с клавиатурой вы можете использовать стрелки и клавиши страниц для перемещения или изменения размера окна. Это свойство контролирует стрелки. Обычный способ перехода в режим взаимодействия с клавиатурой — это открыть меню подокна и выбрать «изменить размер» или «переместить».
Значение по умолчанию для шага стрелок клавиатуры — 5 пикселей.
Функции доступа:
| int | keyboardSingleStep() const |
| void | setKeyboardSingleStep(int step) |
См. также keyboardPageStep.
Документация функций-членов
QMdiSubWindow::QMdiSubWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
Создаёт новый виджет QMdiSubWindow. Аргументы parent и flags передаются конструктору QWidget.
Вместо использования addSubWindow(), можно также просто использовать setParent(), когда вы добавляете подокно в QMdiArea.
Обратите внимание, что только QMdiSubWindow могут быть установлены как дочерние элементы QMdiArea; например, вы не можете написать:
//bad code QMdiArea mdiArea; QTextEdit editor(&mdiArea); // invalid child widget
См. также QMdiArea::addSubWindow().
[signal] void QMdiSubWindow::aboutToActivate()
QMdiSubWindow излучает этот сигнал непосредственно перед тем, как он активируется. После активации подокна, QMdiArea, управляющий под-окном, также излучит сигнал subWindowActivated().
См. также QMdiArea::subWindowActivated().
[slot] void QMdiSubWindow::showShaded()
Вызов этой функции приводит к переходу подокна в режим затемнения. Когда подокно затемнено, видна только строка заголовка.
Хотя затемнение не поддерживается во всех стилях, эта функция всё равно отобразит подокно как затемнённое независимо от того, доступна ли поддержка затемнения. Однако, при использовании со стилями без поддержки затемнения, пользователь не сможет вернуться из режима затемнения через пользовательский интерфейс (например, через кнопку затемнения в строке заголовка).
См. также isShaded().
[slot] void QMdiSubWindow::showSystemMenu()
Отображает системное меню под иконкой системного меню в строке заголовка.
См. также setSystemMenu() и systemMenu().
[signal] void QMdiSubWindow::windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState)
QMdiSubWindow излучает этот сигнал после изменения состояния окна. oldState — состояние окна до изменения, а newState — новое текущее состояние.
[virtual] QMdiSubWindow::~QMdiSubWindow()
Удаляет подокно.
См. также QMdiArea::removeSubWindow().
[override virtual protected] void QMdiSubWindow::changeEvent(QEvent *changeEvent)
Переопределяет: QWidget::changeEvent(QEvent *event).
[override virtual protected] void QMdiSubWindow::childEvent(QChildEvent *childEvent)
Переопределяет: QObject::childEvent(QChildEvent *event).
[override virtual protected] void QMdiSubWindow::closeEvent(QCloseEvent *closeEvent)
Переопределяет: QWidget::closeEvent(QCloseEvent *event).
[override virtual protected] void QMdiSubWindow::contextMenuEvent(QContextMenuEvent *contextMenuEvent)
Переопределяет: QWidget::contextMenuEvent(QContextMenuEvent *event).
[override virtual protected] bool QMdiSubWindow::event(QEvent *event)
Переопределяет: QWidget::event(QEvent *event).
[override virtual protected] bool QMdiSubWindow::eventFilter(QObject *object, QEvent *event)
Переопределяет: QObject::eventFilter(QObject *watched, QEvent *event).
[override virtual protected] void QMdiSubWindow::focusInEvent(QFocusEvent *focusInEvent)
Переопределяет: QWidget::focusInEvent(QFocusEvent *event).
[override virtual protected] void QMdiSubWindow::focusOutEvent(QFocusEvent *focusOutEvent)
Переопределяет: QWidget::focusOutEvent(QFocusEvent *event).
[override virtual protected] void QMdiSubWindow::hideEvent(QHideEvent *hideEvent)
Реализует: QWidget::hideEvent(QHideEvent *event).
bool QMdiSubWindow::isShaded() const
Возвращает true если это окно затенённо; в противном случае возвращает false.
Окно затенённо, если оно свернуто так, что видна только строка заголовка.
[override virtual protected] void QMdiSubWindow::keyPressEvent(QKeyEvent *keyEvent)
Реализует: QWidget::keyPressEvent(QKeyEvent *event).
[override virtual protected] void QMdiSubWindow::leaveEvent(QEvent *leaveEvent)
Реализует: QWidget::leaveEvent(QEvent *event).
QMdiArea *QMdiSubWindow::mdiArea() const
Возвращает область, содержащую это подокно, или nullptr если таковой нет.
Эта функция была добавлена в Qt 4.4.
См. также QMdiArea::addSubWindow().
[override virtual] QSize QMdiSubWindow::minimumSizeHint() const
Реализует: QWidget::minimumSizeHint() const.
[override virtual protected] void QMdiSubWindow::mouseDoubleClickEvent(QMouseEvent *mouseEvent)
Реализует: QWidget::mouseDoubleClickEvent(QMouseEvent *event).
[override virtual protected] void QMdiSubWindow::mouseMoveEvent(QMouseEvent *mouseEvent)
Реализует: QWidget::mouseMoveEvent(QMouseEvent *event).
[override virtual protected] void QMdiSubWindow::mousePressEvent(QMouseEvent *mouseEvent)
Реализует: QWidget::mousePressEvent(QMouseEvent *event).
[override virtual protected] void QMdiSubWindow::mouseReleaseEvent(QMouseEvent *mouseEvent)
Реализует: QWidget::mouseReleaseEvent(QMouseEvent *event).
[override virtual protected] void QMdiSubWindow::moveEvent(QMoveEvent *moveEvent)
Реализует: QWidget::moveEvent(QMoveEvent *event).
[override virtual protected] void QMdiSubWindow::paintEvent(QPaintEvent *paintEvent)
Реализует: QWidget::paintEvent(QPaintEvent *event).
[override virtual protected] void QMdiSubWindow::resizeEvent(QResizeEvent *resizeEvent)
Реализует: QWidget::resizeEvent(QResizeEvent *event).
Предупреждение: При максимизации или восстановлении подокна, вызов этой функции может иметь недействительный QResizeEvent::oldSize().
void QMdiSubWindow::setOption(QMdiSubWindow::SubWindowOption option, bool on = true)
Если on имеет значение true, option включено для подокна; в противном случае оно отключено. См. SubWindowOption для эффекта каждого параметра.
См. также SubWindowOption и testOption().
void QMdiSubWindow::setSystemMenu(QMenu *systemMenu)
Устанавливает systemMenu в качестве текущего системного меню для этого подокна.
По умолчанию каждый QMdiSubWindow имеет стандартное системное меню.
QActions для системного меню, созданного QMdiSubWindow, будут автоматически обновляться в зависимости от текущего состояния окна; например, действие минимизации будет отключено после минимизации окна.
QActions, добавленные пользователем, не обновляются QMdiSubWindow.
QMdiSubWindow берет на себя владение systemMenu; вам не нужно его удалять. Любые существующие меню будут удалены.
См. также systemMenu() и showSystemMenu().
void QMdiSubWindow::setWidget(QWidget *widget)
Устанавливает widget в качестве внутреннего виджета этого подокна. Внутренний виджет отображается в центре подокна под строкой заголовка.
QMdiSubWindow временно берет на себя владение widget; вам не нужно его удалять. Любой существующий внутренний виджет будет удален и переродится в корневое окно.
См. также widget().
[override virtual protected] void QMdiSubWindow::showEvent(QShowEvent *showEvent)
Реализует: QWidget::showEvent(QShowEvent *event).
[override virtual] QSize QMdiSubWindow::sizeHint() const
Реализует: QWidget::sizeHint() const.
QMenu *QMdiSubWindow::systemMenu() const
Возвращает указатель на текущее системное меню или ноль, если системное меню не задано. QMdiSubWindow предоставляет системное меню по умолчанию, но вы также можете установить меню с помощью setSystemMenu().
См. также setSystemMenu() и showSystemMenu().
bool QMdiSubWindow::testOption(QMdiSubWindow::SubWindowOption option) const
Возвращает true если option включен; в противном случае возвращает false.
См. также SubWindowOption и setOption().
[override virtual protected] void QMdiSubWindow::timerEvent(QTimerEvent *timerEvent)
Реализует: QObject::timerEvent(QTimerEvent *event).
QWidget *QMdiSubWindow::widget() const
Возвращает текущий внутренний виджет.
См. также setWidget().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qmdisubwindow.html