Класс QMdiSubWindow
Класс QMdiSubWindow предоставляет класс подокна для QMdiArea. Подробнее...
| Заголовок: | #include <QMdiSubWindow> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследует: | QWidget |
Типы публичного доступа
| перечисление | 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()).
Обработка подокна
QMdiSubWindow также поддерживает поведение, специфичное для подокна в области 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 — это typedef для QFlags<SubWindowOption>. Он хранит комбинацию значений SubWindowOption через операцию OR.
Документация по свойствам
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 = 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 если таковой нет.
См. также QMdiArea::addSubWindow().
[override virtual] QSize QMdiSubWindow::minimumSizeHint() const
Переопределяет функцию доступа к свойству: QWidget::minimumSizeHint.
[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.
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-6.1/qmdisubwindow.html