class QMdiArea#

QMdiArea小部件提供了一个用于显示MDI窗口的区域。更多...

Inheritance diagram of PySide6.QtWidgets.QMdiArea

概要#

属性#

方法#

槽函数#

信号#

注意

此文档可能包含从C++自动转换为Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译存在问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述#

警告

本节包含从C++自动转换为Python的代码片段,可能存在错误。

QMdiArea 函数本质上是MDI窗口的窗口管理器。例如,它将其管理的窗口绘制在其自身上,并以层叠或平铺模式排列。 QMdiArea 常用作QMainWindow 的中心小部件以创建MDI应用程序,但也可以放置在任何布局中。以下代码向主窗口添加了一个区域

mainWindow = QMainWindow()
mainWindow.setCentralWidget(mdiArea)

与顶级窗口的窗口管理器不同,只要当前窗口样式支持这些标志(Qt::WindowFlags),QMdiArea 就支持所有窗口标志。如果样式不支持特定的标志(例如,WindowShadeButtonHint),您仍然可以使用 showShaded() 方法降低窗口。

QMdiArea 中的子窗口是 QMdiSubWindow 的实例。它们通过 addSubWindow() 方法被添加到 MDI 区域中。通常,我们会传入一个 QWidget ,将其设置为内部小部件,但也可以直接传入一个 QMdiSubWindow 。该类继承自 QWidget ,在编程时可以使用与普通顶级窗口相同的 API。《QMdiSubWindow》类还具有特定于 MDI 窗口的行为。有关详细信息,请参阅《QMdiSubWindow` 类描述。

子窗口在获得键盘焦点或调用 setFocus() 方法时变为活动状态。用户可以通过常规的方式移动重点来激活窗口。当活动窗口改变时,MDI 区域会发出 subWindowActivated() 信号,而 activeSubWindow() 函数返回活动子窗口。

便利函数 subWindowList() 返回所有子窗口的列表。这些信息可以用于包含窗口列表的弹出菜单中,例如。

子窗口按当前 WindowOrder 排序。这用于 subWindowList() 以及 activateNextSubWindow()activatePreviousSubWindow()。另外,在启用 cascadeSubWindows()tileSubWindows() 时也会用到。

QMdiArea 提供了两种内置子窗口布局策略:cascadeSubWindows()tileSubWindows() 。这两个都是槽,可以很容易地连接到菜单项。

mdi-cascade1

mdi-tile2

注意

QMdiArea 的默认滚动条属性为 Qt::ScrollBarAlwaysOff。

另请参阅

QMdi子窗口

class AreaOption#

(继承自 enum Flag) 该枚举描述了自定义 QMdiArea 行为的选项。

常量

描述

QMdiArea.DontMaximizeSubWindowOnActivation

当活动子窗口最大化时,默认行为是将下一个激活的子窗口也最大化。如果您不希望这种行为,请设置此选项。

class WindowOrder#

指定用于对 subWindowList() 返回的子窗口列表进行排序的标准。当排列窗口时,cascadeSubWindows()tileSubWindows() 函数遵循此顺序。

常量

描述

QMdiArea.CreationOrder

窗口按创建顺序返回。

QMdiArea.StackingOrder

窗口按堆叠顺序返回,最上面的窗口在列表中最后。

QMdiArea.ActivationHistoryOrder

窗口按激活顺序返回。

另请参阅

subWindowList()

class ViewMode#

该枚举描述了区域的视图模式;即子窗口将如何显示。

常量

描述

QMdiArea.SubWindowView

使用窗口边框显示子窗口(默认)。

QMdiArea.TabbedView

在标签栏中使用标签显示子窗口。

另请参阅

setViewMode()

注意

可以在使用 from __feature__ import true_property 时直接使用属性,或者在其他情况下通过访问函数使用。

property activationOrderᅟ: QMdiArea.WindowOrder#

此属性持有子窗口列表的排序标准。

此属性指定由 subWindowList() 返回的子窗口列表的排序标准。默认情况下,它是窗口创建顺序。

另请参阅

subWindowList()

访问函数
属性background: QBrush#

此属性存储工作空间的背景画笔。

此属性设置了工作空间区域的背景画笔。默认情况下,它是灰色,但可以是任何画笔(例如,颜色、渐变或位图)。

访问函数
属性documentMode: bool#

此属性表示是否在选项卡视图中将标签栏设置为文档模式。

默认情况下,文档模式是禁用的。

访问函数
属性tabPosition: QTabWidget.TabPosition#

此属性存储选项卡视图中选项卡的位置。

此属性的值由 TabPosition 枚举描述。

另请参阅

TabPosition setViewMode()

访问函数
属性tabShape: QTabWidget.TabShape#

此属性存储选项卡视图中选项卡的形状。

此属性的值可以是默认的 RoundedTriangular

另请参阅

TabShape setViewMode()

访问函数
属性tabsClosable: bool#

该属性表示是否在标签视图模式下,标签栏在每个选项卡上放置关闭按钮。

默认情况下标签是不可以关闭的。

访问函数
属性tabsMovable: bool#

该属性表示在标签视图模式下用户是否可以在标签栏区域移动标签。

默认情况下标签是不可以移动的。

另请参阅

movable setViewMode()

访问函数
属性viewMode: QMdiArea.ViewMode#

该属性表示子窗口在 QMdiArea 中的显示方式。

默认情况下使用 SubWindowView 来显示子窗口。

访问函数
__init__([parent=None])#
参数:

parent - QWidget

构建一个空的 Mdi 区域。将 parent 传递给 QWidget 构造函数。

activateNextSubWindow()#

将键盘焦点交给子窗口列表中的另一个窗口。被激活的窗口将由当前的 activation order 决定。

activatePreviousSubWindow()#

将键盘焦点交给子窗口列表中的另一个窗口。被激活的窗口将通过当前的 activation order 确定上一个窗口。

activationOrder()#
返回类型:

WindowOrder

另请参阅

setActivationOrder()

获取属性 activationOrder 的访问器。

activeSubWindow()#
返回类型:

QMdi子窗口

返回当前活动子窗口的指针。如果没有窗口当前处于活动状态,则返回None。

子窗口被视为顶级窗口,即如果MDI区域外的控件是活动窗口,则没有任何子窗口是活动的。注意,如果MDI区域所在的窗口中的控件获得焦点,窗口将被激活。

另请参阅

setActiveSubWindow() WindowState

addSubWindow(widget[, flags=Qt.WindowFlags()])#
参数:
返回类型:

QMdi子窗口

警告

本节包含从C++自动转换为Python的代码片段,可能存在错误。

widget 添加为MDI区域的新子窗口。如果 windowFlags 非零,则它们将覆盖控件上设置的标志。

widget可以是QMdiSubWindow或者另一个QWidget(在这种情况下,MDI区域将创建一个子窗口并将widget设置为内部窗口)。

注意

一旦添加了子窗口,它的父窗口将是QMdiArea视口窗口

mdiArea = QMdiArea()
subWindow1 = QMdiSubWindow()
subWindow1.setWidget(internalWidget1)
subWindow1.setAttribute(Qt.WA_DeleteOnClose)
mdiArea.addSubWindow(subWindow1)
subWindow2 =
    mdiArea.addSubWindow(internalWidget2)

当您创建自己的子窗口时,如果想在MDI区域关闭时删除窗口,必须设置Qt::WA_DeleteOnClose窗口属性。否则,窗口将被隐藏,MDI区域不会激活下一个子窗口。

返回添加到MDI区域的QMdiSubWindow

另请参阅

removeSubWindow()

background()#
返回类型:

QBrush

另请参阅

setBackground()

background属性的获取器。

cascadeSubWindows()#

将所有子窗口以层叠方式排列。

另请参阅

tileSubWindows()

closeActiveSubWindow()#

关闭活动子窗口。

另请参阅

closeAllSubWindows()

closeAllSubWindows()#

通过向每个窗口发送QCloseEvent来关闭所有子窗口。在关闭之前,您可能会收到来自子窗口的subWindowActivated信号(如果MDI区域在关闭另一个窗口时激活了子窗口)。

忽略关闭事件的子窗口将保持打开状态。

另请参阅

closeActiveSubWindow()

currentSubWindow()#
返回类型:

QMdi子窗口

返回指向当前子窗口的指针,如果没有当前子窗口,则返回None。

如果包含QMdiArea的应用程序是活动的,此函数的返回值将与activeSubWindow相同。

documentMode()#
返回类型:

bool

另请参阅

setDocumentMode()

属性 documentMode 的获取器。

removeSubWindow(widget)#
参数:

widgetQWidget

从MDI区域中移除 widgetwidget 必须是 QMdiSubWindow 或者子窗口的内部控件。注意 widget 从来不会由 QMdiArea 实际删除。如果传入 QMdiSubWindow ,则其父级被设置为 None 并将其移除;但如果传入内部控件,则子控件被设置为 None ,但 QMdiSubWindow 不会移除。

另请参阅

addSubWindow()

setActivationOrder(order)#
参数:

orderWindowOrder

另请参阅

activationOrder()

属性 activationOrder 的设置器。

setActiveSubWindow(window)#
参数:

windowQMdiSubWindow

激活子窗口 window。如果 windowNone,则当前任何活动的窗口都会被禁用。

另请参阅

activeSubWindow()

setBackground(background)#
参数:

backgroundQBrush

另请参阅

background()

属性 background 的设置器。

setDocumentMode(enabled)#
参数:

enabled – bool

另请参阅

documentMode()

属性 documentMode 的设置器。

setOption(option[, on=true])#
参数:

如果 on 为 true,则在 MDI 区域中启用 option;否则禁用。请参阅 AreaOption 了解每个选项的影响。

另请参阅

AreaOptiontestOption()

setTabPosition(position)#
参数:

positionTabPosition

另请参阅

tabPosition()

属性 tabPosition 的设置器。

setTabShape(shape)#
参数:

shapeTabShape

另请参阅

tabShape()

属性 tabShape 的设置器。

setTabsClosable(closable)#
参数:

closable – bool

另请参阅

tabsClosable()

属性 tabsClosable 的设置器。

setTabsMovable(movable)#
参数:

movable – bool

另请参阅

tabsMovable()

属性 tabsMovable 的设置器。

setViewMode(mode)#
参数:

modeViewMode

另请参阅

viewMode()

属性 viewMode 的设置器。

subWindowActivated(arg__1)#
参数:

arg__1QMdiSubWindow

QMdiAreawindow 被激活后发出这个信号。当 windowNone 时,QMdiArea 刚刚停用了其最后一个激活窗口,并且工作区上没有激活的窗口。

另请参阅

activeSubWindow()

subWindowList([order=QMdiArea.WindowOrder.CreationOrder])#
参数:

orderWindowOrder

返回类型:

. QMdiSubWindow 列表

返回 MDI 区域中所有子窗口的列表。如果 orderCreationOrder(默认),则窗口的排序方式是它们被插入工作区的顺序。如果 orderStackingOrder ,则窗口将按照其堆叠顺序列出,其中最顶部的窗口为列表中的最后一个元素。如果 orderActivationHistoryOrder ,则窗口将根据其最近的激活历史进行列出。

另请参阅

WindowOrder

tabPosition()#
返回类型:

TabPosition

另请参阅

setTabPosition()

属性 tabPosition 的获取器。

tabShape()#
返回类型:

TabShape

另请参阅

setTabShape()

属性 tabShape 的获取器。

tabsClosable()#
返回类型:

bool

另请参阅

setTabsClosable()

属性 tabsClosable 的获取器。

tabsMovable()#
返回类型:

bool

另请参阅

setTabsMovable()

属性 tabsMovable 的获取器。

testOption(option)#
参数:

optionAreaOption

返回类型:

bool

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

另请参阅

AreaOption setOption()

tileSubWindows()#

将所有子窗口按平铺模式排列。

另请参阅

cascadeSubWindows()

viewMode()#
返回类型:

视图模式

另请参阅

setViewMode()

属性 viewMode 的获取器。