Класс 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()) | |
| virtual | ~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 |
Переопределённые открытые функции
| virtual QSize | minimumSizeHint() const override |
| virtual QSize | sizeHint() const override |
Открытые слоты
| void | showShaded() |
| void | showSystemMenu() |
Сигналы
| void | aboutToActivate() |
| void | windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState) |
Переопределённые защищённые функции
| virtual void | changeEvent(QEvent *changeEvent) override |
| virtual void | childEvent(QChildEvent *childEvent) override |
| virtual void | closeEvent(QCloseEvent *closeEvent) override |
| virtual void | contextMenuEvent(QContextMenuEvent *contextMenuEvent) override |
| virtual bool | event(QEvent *event) override |
| virtual bool | eventFilter(QObject *object, QEvent *event) override |
| virtual void | focusInEvent(QFocusEvent *focusInEvent) override |
| virtual void | focusOutEvent(QFocusEvent *focusOutEvent) override |
| virtual void | hideEvent(QHideEvent *hideEvent) override |
| virtual void | keyPressEvent(QKeyEvent *keyEvent) override |
| virtual void | leaveEvent(QEvent *leaveEvent) override |
| virtual void | mouseDoubleClickEvent(QMouseEvent *mouseEvent) override |
| virtual void | mouseMoveEvent(QMouseEvent *mouseEvent) override |
| virtual void | mousePressEvent(QMouseEvent *mouseEvent) override |
| virtual void | mouseReleaseEvent(QMouseEvent *mouseEvent) override |
| virtual void | moveEvent(QMoveEvent *moveEvent) override |
| virtual void | paintEvent(QPaintEvent *paintEvent) override |
| virtual void | resizeEvent(QResizeEvent *resizeEvent) override |
| virtual void | showEvent(QShowEvent *showEvent) override |
| virtual void | timerEvent(QTimerEvent *timerEvent) override |
Подробное описание
QMdiSubWindow представляет собой окно верхнего уровня в QMdiArea и состоит из строчки заголовка с элементами оформления окна, внутреннего виджета и (в зависимости от текущего стиля) рамки окна и маркёра изменения размера. QMdiSubWindow имеет собственное макетирование, состоящее из строчки заголовка и центральной области для внутреннего виджета.
Наиболее распространённый способ создания QMdiSubWindow — вызов QMdiArea::addSubWindow() с внутренним виджетом в качестве аргумента. Вы также можете создать подокно самостоятельно и установить внутренний виджет, вызвав setWidget().
При программировании с подокнами вы используете тот же API, что и с обычными окнами верхнего уровня (например, вы можете вызывать функции, такие как show(), hide(), showMaximized() и setWindowTitle()).
Обработка подокон
QMdiSubWindow также поддерживает поведение, специфичное для подокон в области MDI.
END_OF_DOCUMENT_MARKERПо умолчанию каждый 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
устанавливает, насколько далеко должен переместиться или изменить размер виджет, когда используются клавиши страниц клавиатуры.
При работе в режиме интерактивного управления клавиатурой можно использовать стрелки и клавиши страниц для перемещения или изменения размера окна. Это свойство управляет клавишами страниц. Обычный способ перехода в режим интерактивного управления клавиатурой заключается в переходе в меню подокна и выборе «изменение размера» или «перемещение».
Значение по умолчанию для шага страницы клавиатуры составляет 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 , если таковой нет.
См. также 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.2/qmdisubwindow.html