Класс 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.
По умолчанию каждое 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
устанавливает, насколько далеко должен переместиться или изменить размер виджет, используя клавиши клавиатуры PageUp/PageDown.
При использовании режима взаимодействия с клавиатурой вы можете использовать клавиши со стрелками и PageUp/PageDown для перемещения или изменения размера окна. Это свойство управляет клавишами PageUp/PageDown. Обычный способ перехода в режим взаимодействия с клавиатурой — это открытие меню под окна и выбор «Изменить размер» или «Переместить».
Значение по умолчанию для свойства keyboard page step составляет 20 пикселей.
Функции доступа:
| int | keyboardPageStep() const |
| void | setKeyboardPageStep(int step) |
См. также keyboardSingleStep.
keyboardSingleStep : int
устанавливает, насколько далеко должен переместиться или изменить размер виджет, используя клавиши со стрелками.
При использовании режима взаимодействия с клавиатурой вы можете использовать клавиши со стрелками и PageUp/PageDown для перемещения или изменения размера окна. Это свойство управляет клавишами со стрелками. Обычный способ перехода в режим взаимодействия с клавиатурой — это открытие меню под окна и выбор «Изменить размер» или «Переместить».
Значение по умолчанию для свойства keyboard single step составляет 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.0/qmdisubwindow.html