QMdiSubWindow 类

QMdiSubWindow 类提供了一个子窗口类用于 QMdiArea更多...

头文件 #include <QMdiSubWindow>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承 QWidget

公共类型

枚举SubWindowOption { RubberBandResize, RubberBandMove }
标志SubWindowOptions

属性

公共函数

QMdiSubWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
virtual~QMdiSubWindow()
boolisShaded() const
intkeyboardPageStep() const
intkeyboardSingleStep() const
QMdiArea *mdiArea() const
voidsetKeyboardPageStep(int step)
voidsetKeyboardSingleStep(int step)
voidsetOption(QMdiSubWindow::SubWindowOption option, bool on = true)
voidsetSystemMenu(QMenu *systemMenu)
voidsetWidget(QWidget *widget)
QMenu *systemMenu() const
booltestOption(QMdiSubWindow::SubWindowOption option) const
QWidget *widget() const

重实现的公共函数

virtual QSizeminimumSizeHint() const override
virtual QSizesizeHint() const override

公共槽

信号

voidaboutToActivate()
voidwindowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState)

重实现的保护函数

virtual voidchangeEvent(QEvent *changeEvent) override
virtual void子事件(QChildEvent *子事件) override
virtual void关闭事件(QCloseEvent *关闭事件) override
virtual void上下文菜单事件(QContextMenuEvent *上下文菜单事件) override
虚bool事件(QEvent *事件) override
虚bool事件过滤器(QObject *对象, QEvent *事件) override
virtual void焦点进入事件(QFocusEvent *焦点进入事件) override
virtual void焦点离开事件(QFocusEvent *焦点离开事件) override
virtual void隐藏事件(QHideEvent *隐藏事件) override
virtual void按键事件(QKeyEvent *按键事件) override
virtual void离开事件(QEvent *离开事件) override
virtual void鼠标双击事件(QMouseEvent *鼠标事件) override
virtual void鼠标移动事件(QMouseEvent *鼠标事件) override
virtual void鼠标按下事件(QMouseEvent *鼠标事件) override
virtual void鼠标释放事件(QMouseEvent *鼠标事件) override
virtual void移动事件(QMoveEvent *移动事件) override
virtual void绘制事件(QPaintEvent *绘制事件) override
virtual void大小改变事件(QResizeEvent *大小改变事件) override
virtual void显示事件(QShowEvent *显示事件) override
virtual void计时器事件(QTimerEvent *计时器事件) override

详细说明

QMdiSubWindow 表示 MDI 区域中的顶级窗口,它由一个带窗口装饰的标题栏、一个内部小部件以及(根据当前样式)一个窗口边框和大小调整抓手组成。QMdiSubWindow 有自己的布局,其中包括标题栏和内部小部件的中心区域。

构造 QMdiSubWindow 最常见的做法是通过将内部小部件作为参数调用 QMdiArea::addSubWindow()。您还可以自己创建一个子窗口,并通过调用 setWidget() 设置内部小部件。

使用子窗口编程时使用的 API 与常规顶级窗口相同(例如,您可以调用类似于 show()、hide()、showMaximized() 以及 setWindowTitle())的函数。

子窗口处理

QMdiSubWindow 还支持 MDI 区域中子窗口的特定行为。

默认情况下,每次移动 QMdiSubWindow 时,它都将在 MDI 区域视口中可见,但也可以指定透明窗口移动和调整大小行为,在这些操作期间仅更新子窗口的外轮廓。使用 setOption() 函数启用此行为。

isShaded() 函数检测子窗口当前是否折叠(即,窗口折叠,只剩下标题栏可见)。要进入折叠模式,请调用 showShaded()。QMdiSubWindow 在窗口状态改变时发出 windowStateChanged() 信号(例如,当窗口最小化或恢复时)。在被激活之前,它还会发出 aboutToActivate() 信号。

在键盘交互模式下,窗口可以通过键盘移动和调整大小。您可以通过窗口的系统菜单进入此模式。属性 keyboardSingleStepkeyboardPageStep 控制定位器每次按键事件移动或调整大小的距离。当按下Shift键时使用页面步进;否则使用单步。

您还可以使用键盘更改活动窗口。同时按下Ctrl和Tab键,将激活下一个(使用当前 WindowOrder)子窗口。按下Ctrl、Shift和Tab将激活上一个窗口。这相当于调用 activateNextSubWindow() 和 activatePreviousSubWindow()。请注意,这些快捷键会覆盖全局快捷键,但不会覆盖 QMdiArea 的快捷键。

另请参阅 QMdiArea

成员类型文档

枚举 QMdiSubWindow::SubWindowOption
标志 QMdiSubWindow::SubWindowOptions

此枚举描述了自定义 QMdiSubWindow 行为的选项。

常量描述
QMdiSubWindow::RubberBandResize0x4启用此选项时,将使用橡皮筋控件表示子窗口轮廓,用户将调整此控件而不是子窗口本身。因此,子窗口保持其原始位置和大小,直到调整大小操作完成,此时将收到一个单独的 QResizeEvent。默认情况下,此选项是禁用的。
QMdiSubWindow::RubberBandMove0x8启用此选项时,将使用橡皮筋控件表示子窗口的轮廓,用户将移动此控件而不是子窗口本身。因此,子窗口保持其原始位置,直到移动操作完成,此时将向窗口发送一个 QMoveEvent。默认情况下,此选项是禁用的。

SubWindowOptions 类型是 QFlags<SubWindowOption> 的同义词。它存储了 SubWindowOption 值的 OR 组合。

属性文档

keyboardPageStep : int

设置在使用键盘页面键时,小工具应移动或调整大小的距离。

在键盘交互模式下,您可以使用箭头键和页面键来移动或调整窗口。此属性控制页面键。进入键盘交互模式的一种常见方法是进入子窗口菜单,并选择“调整大小”或“移动”。

默认键盘页面步进值是20像素。

访问函数

intkeyboardPageStep() const
voidsetKeyboardPageStep(int step)

另请参阅 keyboardSingleStep

keyboardSingleStep : int

设置在使用键盘箭头键时,小工具应移动或调整大小的距离。

在键盘交互模式下,您可以使用箭头键和页面键来移动或调整窗口。此属性控制箭头键。进入键盘交互模式的一种常见方法是进入子窗口菜单,并选择“调整大小”或“移动”。

默认键盘单步值是5像素。

访问函数

intkeyboardSingleStep() const
voidsetKeyboardSingleStep(int step)

另请参阅 keyboardPageStep

成员函数文档

QMdiSubWindow::QMdiSubWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())

构建一个新的 QMdiSubWindow 小部件。将 parentflags 参数传递给 QWidget 的构造函数。

使用 addSubWindow() 的同时,还可以简单地使用 setParent() 将子窗口添加到 QMdiArea 中。

请注意,只有 QMdiSubWindow 可以设置为 QMdiArea 的子窗口;例如,你不能编写

//bad code
QMdiArea mdiArea;
QTextEdit editor(&mdiArea); // invalid child widget

另外参见 QMdiArea::addSubWindow().

[虚函数 noexcept] QMdiSubWindow::~QMdiSubWindow()

销毁子窗口。

另外参见 QMdiArea::removeSubWindow().

[信号] void QMdiSubWindow::aboutToActivate()

QMdiSubWindow 在激活前立即发出此信号。子窗口被激活后,管理子窗口的 QMdiArea 也会发出 subWindowActivated() 信号。

另外参见 QMdiArea::subWindowActivated().

[重写虚保护] void QMdiSubWindow::changeEvent(QEvent *changeEvent)

重写: QWidget::changeEvent(QEvent *event).

[重写虚保护] void QMdiSubWindow::childEvent(QChildEvent *childEvent)

重写: QObject::childEvent(QChildEvent *event).

[重写虚保护] void QMdiSubWindow::closeEvent(QCloseEvent *closeEvent)

重写: QWidget::closeEvent(QCloseEvent *event).

[重写虚保护] void QMdiSubWindow::contextMenuEvent(QContextMenuEvent *contextMenuEvent)

重写: QWidget::contextMenuEvent(QContextMenuEvent *event).

[重写虚保护] bool QMdiSubWindow::event(QEvent *event)

重写: QWidget::event(QEvent *event).

[重写虚保护] bool QMdiSubWindow::eventFilter(QObject *object, QEvent *event)

重写: QObject::eventFilter(QObject *watched, QEvent *event).

[重写虚保护] void QMdiSubWindow::focusInEvent(QFocusEvent *focusInEvent)

重写: QWidget::focusInEvent(QFocusEvent *event).

[重写虚拟受保护] void QMdiSubWindow::focusOutEvent(QFocusEvent *focusOutEvent)

重实现了: QWidget::focusOutEvent(QFocusEvent *event).

[重写虚拟受保护] void QMdiSubWindow::hideEvent(QHideEvent *hideEvent)

重实现了: QWidget::hideEvent(QHideEvent *event).

bool QMdiSubWindow::isShaded() const

如果此窗口被折叠仅为标题栏可见,则返回 true;否则返回 false

窗口被折叠时是阴影状态。

[重写虚拟受保护] void QMdiSubWindow::keyPressEvent(QKeyEvent *keyEvent)

重实现了:QWidget::keyPressEvent(QKeyEvent *event).

[重写虚拟受保护] void QMdiSubWindow::leaveEvent(QEvent *leaveEvent)

重实现了:QWidget::leaveEvent(QEvent *event).

QMdiArea *QMdiSubWindow::mdiArea() const

返回包含此子窗口的区域,如果没有则为 nullptr

另外参见 QMdiArea::addSubWindow().

[重写虚拟] QSize QMdiSubWindow::minimumSizeHint() const

重实现了属性访问函数: QWidget::minimumSizeHint.

[重写虚拟受保护] void QMdiSubWindow::mouseDoubleClickEvent(QMouseEvent *mouseEvent)

重实现了:QWidget::mouseDoubleClickEvent(QMouseEvent *event).

[重写虚拟受保护] void QMdiSubWindow::mouseMoveEvent(QMouseEvent *mouseEvent)

重实现了:QWidget::mouseMoveEvent(QMouseEvent *event).

[重写虚拟受保护] void QMdiSubWindow::mousePressEvent(QMouseEvent *mouseEvent)

重实现了:QWidget::mousePressEvent(QMouseEvent *event).

[重写虚拟受保护] void QMdiSubWindow::mouseReleaseEvent(QMouseEvent *mouseEvent)

重实现了:QWidget::mouseReleaseEvent(QMouseEvent *event).

[重写虚拟受保护] void QMdiSubWindow::moveEvent(QMoveEvent *moveEvent)

重实现了:QWidget::moveEvent(QMoveEvent *event).

[重写虚拟受保护] void QMdiSubWindow::paintEvent(QPaintEvent *paintEvent)

重实现: QWidget::paintEvent(QPaintEvent *event)。

[覆盖虚拟保护] void QMdiSubWindow::resizeEvent(QResizeEvent *resizeEvent)

重实现:QWidget::resizeEvent(QResizeEvent *event)。

警告:在最大化或还原子窗口时,对此函数的调用可能导致QResizeEvent::oldSize无效。

void QMdiSubWindow::setOption(QMdiSubWindow::SubWindowOption option, bool on = true)

如果 on 为真,则在子窗口中启用 option;否则禁用。请参阅SubWindowOption了解每个选项的效果。

另请参阅SubWindowOptiontestOption

void QMdiSubWindow::setSystemMenu(QMenu *systemMenu)

systemMenu 设置为当前子窗口的系统菜单。

默认情况下,每个 QMdiSubWindow 都有一个标准系统菜单。

QMdiSubWindow 创建的系统菜单的操作将在当前窗口状态的基础上自动更新;例如,当窗口最小化后,最小化操作将被禁用。

用户添加的操作不会由 QMdiSubWindow 更新。

QMdiSubWindow 将获取 systemMenu 的所有权;您无需删除它。任何现有菜单将被删除。

另请参阅systemMenu() 和 showSystemMenu

void QMdiSubWindow::setWidget(QWidget *widget)

widget 设置为此子窗口的内部小部件。内部小部件在标题栏下方显示在子窗口的中心。

QMdiSubWindow 将获取对 widget 的临时所有权;您无需删除它。任何现有的内部小部件都将被移除并重新父化到根窗口。

另请参阅widget

[覆盖虚拟保护] void QMdiSubWindow::showEvent(QShowEvent *showEvent)

重实现:QWidget::showEvent(QShowEvent *event)。

[槽] void QMdiSubWindow::showShaded()

调用此函数将使子窗口进入阴影模式。当子窗口被阴影处理时,只有标题栏可见。

尽管阴影不支持所有样式,此函数仍会将子窗口显示为阴影样式,无论是否支持阴影。但是,当与不支持阴影的样式一起使用时,用户将无法通过用户界面(例如,通过标题栏中的阴影按钮)从阴影模式返回。

另请参阅isShaded

[槽] void QMdiSubWindow::showSystemMenu()

显示标题栏下系统菜单图标下的系统菜单。

另请参阅setSystemMenu()和systemMenu

[覆盖虚函数] QSize QMdiSubWindow::sizeHint() const

重新实现了属性访问函数:QWidget::sizeHint

QMenu *QMdiSubWindow::systemMenu() const

返回当前系统菜单的指针,如果没有设置系统菜单则返回零。QMdiSubWindow提供一个默认的系统菜单,但您也可以使用setSystemMenu()设置菜单。

另请参阅setSystemMenu()和showSystemMenu

bool QMdiSubWindow::testOption(QMdiSubWindow::SubWindowOption option) const

如果option被启用,则返回true;否则返回false

另请参阅SubWindowOptionsetOption

[覆盖虚保护] void QMdiSubWindow::timerEvent(QTimerEvent *timerEvent)

重新实现了:QObject::timerEvent(QTimerEvent *event)。

QWidget *QMdiSubWindow::widget() const

返回当前内部小部件。

另请参阅setWidget

[信号] void QMdiSubWindow::windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState)

QMdiSubWindow在窗口状态改变后发出此信号。oldState是改变前的窗口状态,而newState是新的当前状态。

© 2024 Qt公司。此处包含的文档贡献者是各自拥有版权的所有者。此处提供的文档是在自由软件基金会的GNU自由文档许可协议版本1.3的条款下发布的。Qt及其相关标志是芬兰的Qt公司及其在全世界其他地方的商标。所有其他商标均为各自所有者所有。