PySide6.QtWidgets.QMdiArea

class QMdiArea

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

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-tile2

mdi-tile2

注意

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

另请参阅

QMdiSubWindow

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()

Access functions:
property backgroundᅟ: QBrush

此属性保存工作区的背景画刷。

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

Access functions:
property documentModeᅟ: bool

此属性表示在标签视图模式下,标签栏是否设置为文档模式。

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

Access functions:
property tabPositionᅟ: QTabWidget.TabPosition

此属性保存选项卡视图模式中选项卡的位置。

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

另请参阅

TabPosition setViewMode()

Access functions:
property tabShapeᅟ: QTabWidget.TabShape

此属性保存选项卡视图模式下选项卡的形状。

此属性的可能值为 Rounded(默认)或 Triangular

另请参阅

TabShape setViewMode()

Access functions:
property tabsClosableᅟ: bool

此属性决定在标签视图模式下,标签栏是否应在每个标签上放置关闭按钮。

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

Access functions:
property tabsMovableᅟ: bool

此属性用于确定用户是否可以在标签视图模式下在标签栏区域内移动标签。

默认情况下,选项卡是不可移动的。

另请参阅

movable setViewMode()

Access functions:
property viewModeᅟ: QMdiArea.ViewMode

此属性决定了子窗口在QMdiArea中的显示方式。

默认情况下,SubWindowView 用于显示子窗口。

Access functions:
__init__([parent=None])
Parameters:

父级QWidget

构造一个空的MDI区域。parent被传递给QWidget的构造函数。

activateNextSubWindow()

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

activatePreviousSubWindow()

将键盘焦点给予子窗口列表中的另一个窗口。激活的窗口将是根据当前activation order确定的先前窗口。

activationOrder()
Return type:

WindowOrder

另请参阅

setActivationOrder()

属性 activationOrderᅟ 的获取器。

activeSubWindow()
Return type:

QMdiSubWindow

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

子窗口在窗口状态方面被视为顶级窗口,即如果MDI区域外的小部件是活动窗口,则没有子窗口会处于活动状态。请注意,如果MDI区域所在的窗口中的小部件获得焦点,则该窗口将被激活。

另请参阅

setActiveSubWindow() WindowState

addSubWindow(widget[, flags=Qt.WindowFlags()])
Parameters:
Return type:

QMdiSubWindow

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

widget作为新的子窗口添加到MDI区域。如果windowFlags不为零,它们将覆盖在widget上设置的标志。

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()
Return type:

QBrush

另请参阅

setBackground()

属性 backgroundᅟ 的获取器。

cascadeSubWindows()

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

另请参阅

tileSubWindows()

closeActiveSubWindow()

关闭活动的子窗口。

另请参阅

closeAllSubWindows()

closeAllSubWindows()

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

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

另请参阅

closeActiveSubWindow()

currentSubWindow()
Return type:

QMdiSubWindow

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

如果包含QMdiAreaQApplication处于活动状态,此函数将返回与activeSubWindow()相同的结果。

documentMode()
Return type:

布尔

另请参阅

setDocumentMode()

属性 documentModeᅟ 的获取器。

removeSubWindow(widget)
Parameters:

widgetQWidget

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

另请参阅

addSubWindow()

setActivationOrder(order)
Parameters:

排序WindowOrder

另请参阅

activationOrder()

属性 activationOrderᅟ 的设置器。

setActiveSubWindow(window)
Parameters:

窗口QMdiSubWindow

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

另请参阅

activeSubWindow()

setBackground(background)
Parameters:

背景QBrush

另请参阅

background()

属性 backgroundᅟ 的设置器。

setDocumentMode(enabled)
Parameters:

enabled – 布尔值

另请参阅

documentMode()

属性 documentModeᅟ 的设置器。

setOption(option[, on=true])
Parameters:

如果 on 为真,则在 MDI 区域启用 option;否则禁用。有关每个选项的效果,请参见 AreaOption

另请参阅

AreaOption testOption()

setTabPosition(position)
Parameters:

位置TabPosition

另请参阅

tabPosition()

属性 tabPositionᅟ 的设置器。

setTabShape(shape)
Parameters:

形状TabShape

另请参阅

tabShape()

属性 tabShapeᅟ 的设置器。

setTabsClosable(closable)
Parameters:

closable – bool

另请参阅

tabsClosable()

属性 tabsClosableᅟ 的设置器。

setTabsMovable(movable)
Parameters:

movable – 布尔值

另请参阅

tabsMovable()

属性 tabsMovableᅟ 的设置器。

setViewMode(mode)
Parameters:

modeViewMode

另请参阅

viewMode()

属性 viewModeᅟ 的设置器。

subWindowActivated(window)
Parameters:

窗口QMdiSubWindow

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

另请参阅

activeSubWindow()

subWindowList([order=QMdiArea.WindowOrder.CreationOrder])
Parameters:

排序WindowOrder

Return type:

QMdiSubWindow的列表

返回MDI区域中所有子窗口的列表。如果orderCreationOrder(默认值),则窗口按照它们插入工作区的顺序排序。如果orderStackingOrder,则窗口按照它们的堆叠顺序列出,最顶层的窗口作为列表中的最后一项。如果orderActivationHistoryOrder,则窗口按照它们最近的激活历史列出。

另请参阅

WindowOrder

tabPosition()
Return type:

TabPosition

另请参阅

setTabPosition()

获取属性 tabPositionᅟ 的Getter。

tabShape()
Return type:

TabShape

另请参阅

setTabShape()

属性 tabShapeᅟ 的获取器。

tabsClosable()
Return type:

布尔

另请参阅

setTabsClosable()

属性 tabsClosableᅟ 的获取器。

tabsMovable()
Return type:

布尔

另请参阅

setTabsMovable()

属性 tabsMovableᅟ 的获取器。

testOption(opton)
Parameters:

optonAreaOption

Return type:

布尔

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

另请参阅

AreaOption setOption()

tileSubWindows()

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

另请参阅

cascadeSubWindows()

viewMode()
Return type:

ViewMode

另请参阅

setViewMode()

属性 viewModeᅟ 的获取器。