停靠控件QDockWidget
停靠控件QDockWidget主要应用在主窗口中,用鼠标可以将其拖拽到不同的停靠区域中。停靠控件通常作为容器来使用,需要在其内部添加一些常用控件。
停靠控件由标题栏和内容区构成,标题栏上显示窗口标题,还有浮动按钮和关闭按钮。
停靠控件QDockWidget继承自QWidget。用QDockWidget类创建停靠控件实例的方法如下所示,其中title是停靠控件的窗口标题,parent是停靠控件所在的窗口。
from PySide6.QtWidgets import QDockWidget
QDockWidget(parent: Union[PySide6.QtWidgets.QWidget,NoneType]=None,flags: PySide6.QtCore.Qt.WindowType=Default(Qt.WindowFlags))-> None
QDockWidget(title: str,parent: Union[PySide6.QtWidgets.QWidget,NoneType]=None,flags: PySide6.QtCore.Qt.WindowType=Default(Qt.WindowFlags))-> None
QDockWidget提供了dock小部件的概念,也称为工具选项板或实用窗口。Dock窗口是位于QMainWindow中中央窗口小部件周围的dock窗口区域中的辅助窗口。
窗口可以在其当前区域内移动,移动到新区域并由最终用户浮动(例如,取消停靠)。QDockWidget API允许程序员限制dockwidget移动、浮动和关闭的能力,以及它们可以放置的区域。
外观
QDockWidget由标题栏和内容区域组成。标题栏显示dock小部件窗口标题、浮动按钮和关闭按钮。根据QDockWidget的状态,浮动和关闭按钮可能被禁用或根本不显示。
标题栏和按钮的视觉外观取决于所使用的样式。
QDockWidget充当其子小部件的包装器,使用setWidget()设置。自定义大小提示、最小和最大大小和大小策略应在子小部件中实施。QDockWidget将尊重它们,调整其自身的约束以包括框架和标题。大小约束不应设置在QDockWidget本身上,因为它们会根据是否停靠而改变; 停靠的QDockWidget没有框架,标题栏较小。
在macOS上,如果QDockWidget具有本机窗口句柄(例如,在其上调用winId()或子窗口小部件),然后,由于限制,无法在卸载时拖动dock小部件。启动拖动将取消停靠小部件,但需要第二次拖动来移动停靠小部件本身。
停靠控件 QDockWidget属性
属性 | 描述 | 访问功能 |
---|---|---|
allowedAreas: DockWidgetAreas | 此属性保存可放置dock小部件的区域。 默认值为alldockwidgetarea。 | allowedAreas() setAllowedAreas(areas) Signal allowedAreasChanged(allowedAreas) |
features: DockWidgetFeatures | 此属性保存dock小部件是否可移动、可关闭和可浮动。 默认情况下,此属性设置为DockWidgetClosable、DockWidgetMovable和dockwidgetfloable的组合。 | features() setFeatures(features) Signal featuresChanged(features) |
floating: bool | 此属性保存dock小部件是否浮动。 浮动停靠小部件作为独立窗口呈现给用户,该窗口位于其父QMainWindow的"顶部",而不是停靠在QMainWindow中。 默认情况下,此属性为true。 当此属性更改时,将发出toplevelchange()信号。 | isFloating() setFloating(floating) |
windowTitle: str | 此属性包含dock小部件标题(标题)。 默认情况下,此属性包含一个空字符串。 |
停靠控件 QDockWidget的常用方法
停靠控件 QDockWidget主要方法介绍如下。
-
setWidget(QWidget)方法设置停靠控件工作区中的控件,通常选择容器类控件和表格类控件作为工作区的控件,用widget()方法获取工作区中的控件。
-
setTitleBarWidget(QWidget)方法设置标题栏中的控件,用titleBarWidget()方法获取标题栏中的控件。
-
setAllowedAreas(Qt.DockWidgetArea)方法设置停靠控件可以停靠的区域,用allowedAreas()方法获取可以停靠的区域,用isAreaAllowed(Qt.DockWidgetArea)方法获取指定的区域是否允许停靠。
-
setFeatures(QDock Widget.DockWidgetFeatures)方法设置停靠控件的特征,其中参数QDock Widget.Dock WidgetFeature 可以取以下值,用features()方法获取特征。
-
PySide6.QtWidgets.QDockWidget.DockWidgetFeature
Constant Description QDockWidget.DockWidgetClosable (继承枚举.Flag)可以关闭dock小部件。在某些系统上,dock小部件浮动时总是有一个关闭按钮(例如在MacOS 10.5上)。 QDockWidget.DockWidgetMovable 用户可以在码头之间移动码头小部件。 QDockWidget.DockWidgetFloatable dock小部件可以从主窗口分离,并作为独立窗口浮动。 QDockWidget.DockWidgetVerticalTitleBar dock小部件在其左侧显示垂直标题栏。这可用于增加QMainWindow中的垂直空间量。 QDockWidget.NoDockWidgetFeatures 无法关闭、移动或浮动dock小部件。
-
-
toggleViewAction()方法返回一个QAction动作对象,单击该动作对象可以切换停靠窗口的可见状态,即该动作是一个对停靠控件窗口进行显示或关闭的开关。如果将该动作加到菜单上,对应菜单栏的文字即为停靠窗口的title文字,这样就可以在菜单上单击对应菜单项进行停靠窗口的关闭和显示。
停靠控件 QDockWidget的常用方法如表所示:
QDock Widget的方法及参数类型 | 返回值的类型 | 说 明 |
---|---|---|
setAllowedAreas(Qt.DockWidgetArea) | None | 设置可停靠区域 |
isAreaAllowed(Qt.DockWidgetArea) | bool | 获取区域是否允许停靠 如果可以将此dock小部件放置在给定区域中,则返回true; 否则返回false。 |
allowedAreas(QDockWidget.DockWidgetFeatures) | Qt.DockWidgetArea | 获取可停靠的区域 |
setFeatures(QDockWidget.DockWidgetFeatures) | None | 设置特征 |
features() | 获取features属性 | |
setFloating(bool) | None | 设置是否浮动状态 |
isFloating() | bool | 获取是否处于浮动状态floating属性 |
setTitleBarWidget(QWidget) | None | 将任意小部件设置为dock小部件的标题栏。 如果widget为None,则删除先前在dockwidget上设置的任何自定义标题栏widget,但不会删除,而是使用默认标题栏。 如果设置了标题栏小部件,则QDockWidget在浮动时将不使用本机窗口装饰。 必须通过调用忽略()来忽略标题栏小部件未显式处理的鼠标事件。然后,这些事件传播到QDockWidget父级,QDockWidget父级以通常的方式处理它们,在拖动标题栏时移动,在双击标题栏时对接和取消对接等。 在QDockWidget上设置DockWidgetVerticalTitleBar时,将相应地重新定位标题栏小部件。在resizeEvent()中,标题栏应检查其应采用的方向: dockWidget = QDockWidget(parentWidget()) if dockWidget.features()QDockWidget.DockWidgetVerticalTitleBar: # I need to be vertical else: # I need to be horizontal 标题栏小部件必须具有有效的sizeHint()和minimumSizeHint()。这些功能应考虑标题栏的当前方向。 无法从dock小部件中删除标题栏。但是,通过将默认构造的QWidget设置为标题栏小部件,可以实现类似的效果。 |
titleBarWidget() | QWidget | 返回在QDockWidget上设置的自定义标题栏小部件,如果未设置自定义标题栏,则返回None。 |
setWidget(QWidget) | None | 将dock小部件的小部件设置为QWidget。 如果添加小部件时dock小部件可见,则必须显式显示()。 请注意,在调用此函数之前,必须添加小部件的布局; 否则,小部件将不可见。 |
widget() | QWidget | 返回dock小部件的小部件。如果未设置小部件,则此函数返回零。 |
toggleViewAction() | PySide6.QtGui.QAction | 获取隐藏或显示的动作 返回可检查的操作,该操作可添加到菜单和工具栏,以便用户可以显示或关闭此dock小部件。 操作的文本设置为dock小部件的窗口标题。 该操作不能用于以编程方式显示或隐藏dock小部件。为此使用visible属性。 |
initStyleOption(PySide6.QtWidgets.QStyleOptionDockWidget) | 使用此QDockWidget中的值初始化选项。当子类需要QStyleOptionDockWidget但不想自己填写所有信息时,此方法对于子类很有用。 QStyleOptionDockWidget包含QStyle函数绘制QDockWidget等图形元素所需的所有信息。 出于性能原因,成员函数很少,并且对成员变量的访问是直接的(即,使用。或者-> 运算符)。这使得结构易于使用,并强调这些只是样式函数使用的参数。 有关演示如何使用样式选项的示例,请参见样式示例。 |
- PySide6.QtCore.Qt.DockWidgetArea
(继承枚举.Flag)表示QDockWidget可以插入的区域。带有选项卡的浮动dock小部件可以停靠在任何地方。
Constant | Description |
---|---|
Qt.LeftDockWidgetArea | QMainWindow的左停靠区域。 |
Qt.RightDockWidgetArea | QMainWindow的右侧停靠区域。 |
Qt.TopDockWidgetArea | QMainWindow的顶部停靠区域。 |
Qt.BottomDockWidgetArea | QMainWindow的底部停靠区域。 |
Qt.AllDockWidgetAreas | 所有dock窗口小部件区域(默认)。 |
Qt.NoDockWidgetArea | 无停靠小部件区域。 |
停靠控件 QDockWidget的信号
QDockWidget的信号及参数类型 | 说明 |
---|---|
allowedAreasChanged(DockWidgetAreas:Qt.DockWidgetArea) | 允许停靠的区域发生改变时发送信号 当allowedarea属性发生变化时,会发出该信号。Allowedarea参数提供属性的新值。 财产允许区域的通知信号。 |
dockLocationChanged(PySide6.QtCore.Qt.DockWidgetArea) | 停靠的区域发生改变时发送信号 当码头小部件移动到另一个码头区域或移动到其当前码头区域的其他位置时,会发出此信号。当dock小部件以编程方式移动或被用户拖动到新位置时,就会发生这种情况。 |
featuresChanged(QDockWidget.DockWidgetFeature) | 特征改变时发送信号 当特征属性改变时,会发出该信号。要素参数提供属性的新值。 属性特征的通知信号。 |
topLevelChanged(bool) | 悬浮和停靠状态转换时发送信号 当浮动属性改变时发出该信号。如果dock小部件现在处于浮动状态,则topLevel参数为true; 否则为false。 |
visibilityChanged(bool) | 可见性改变时发送信号 当dock小部件变得可见(或不可见)时,会发出此信号。当小部件被隐藏或显示时,以及当它停靠在选项卡式停靠区域并且其选项卡被选中或未选中时,就会发生这种情况。 |