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