class QDockWidget#

QDockWidget类提供了一种可以停靠在QMainWindow内部或作为桌面上的顶层窗口浮动的QWidget。

Inheritance diagram of PySide6.QtWidgets.QDockWidget

概要

属性

  • allowedAreas - 可以放置停靠小部件的区域

  • features - 停靠小部件是否可移动、可关闭和浮动

  • floating - 停靠小部件是否浮动

  • windowTitle - 停靠小部件的标题(标签)

方法

虚函数#

信号#

注意

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

详细说明#

QDockWidget提供了停靠部件的概念,也称为工具调色板或实用窗口。停靠窗口是放置在central widget周围的 停靠部件区域 中作为QMainWindow的辅助窗口。

../../_images/mainwindow-docks.png

用户可以将窗口拖动到当前区域内,将其移动到新区域,或浮动(例如,从窗口中取出)。QDockWidget API 允许程序员限制拖动小部件的移动、浮动和关闭能力,以及它们可以放置的区域。

外观#

QDockWidget 包含一个标题栏和内容区域。标题栏显示拖动小部件的窗口标题、一个“浮动”按钮和一个“关闭”按钮。根据小部件的状态,这些按钮可能被禁用或者根本不显示。

标题栏和按钮的视觉外观依赖于正在使用的 style 样式。

QDockWidget 是通过其子小部件(通过 setWidget() 设置)实现的包装器。自定义大小提示、最小最大尺寸和尺寸策略应在子小部件中实现。当 QDockWidget 尊重这些限制,调整自身的约束以包含框和标题。不应该在 QDockWidget 本身上设置尺寸限制,因为这些限制取决于它是被嵌入还是在浮动;嵌入的 QDockWidget 没有线框并且标题栏较小。

注意

在 macOS 上,如果小部件具有本地窗口句柄(例如,如果对其或子小部件调用 winId() ),则由于限制,在从窗口中取出时将无法拖动拖动小部件。开始拖动将使小部件从窗口中取出,但需要第二次拖动才能移动小部件本身。

另请参阅

QMainWindow

DockWidgetFeature#

常量

描述

QDockWidget.DockWidgetClosable

(继承自 enum.Flag)小部件可以被关闭。

QDockWidget.DockWidgetMovable

用户可以在多个停靠之间移动小部件。

QDockWidget.DockWidgetFloatable

小部件可以从主窗口中分离出来,作为独立窗口浮动。

QDockWidget.DockWidgetVerticalTitleBar

码头小部件在其左侧显示一个垂直标题栏。这可以用来增加一个 QMainWindow 的垂直空间。

QDockWidget.NoDockWidgetFeatures

码头小部件不能被关闭、移动或浮动。

注意

当使用 from __feature__ import true_property 时可以直接使用属性,否则通过访问器函数。

property allowedAreas: Qt.DockWidgetArea 的组合#

此属性是码头小部件可能放置的区域。

默认为 Q::AllDockWidgetAreas。

另请参阅

DockWidgetArea

访问函数
property features: QDockWidget.DockWidgetFeature 的组合#

此属性保持码头小部件是否可移动、可关闭和可浮动。

默认情况下,此属性设置为 DockWidgetClosableDockWidgetMovableDockWidgetFloatable 的组合。

另请参阅

DockWidgetFeature

访问函数
property floating: bool#

此属性保持码头小部件是否浮动。

浮动码头小部件以单个独立窗口的形式呈现给用户,位于其父 QMainWindow 上,“在顶部”而不是在 QMainWindow 内或在一组选项卡式码头小部件组中。

浮动码头小部件既可以通过编程也可以通过鼠标交互来单独定位和调整大小。

默认情况下,此属性为 true

当此属性发生变化时,会发出 topLevelChanged() 信号。

访问函数
属性 windowTitle: str#

该属性持有停靠小部件的标题(标签)。

默认情况下,该属性包含一个空字符串。

访问函数

__init__(title[, parent=None[, flags=Qt.WindowFlags()]])#
参数:

使用父对象 parent 和窗口标志 flags 构造一个 QDockWidget。停靠小部件将被放置在左侧停靠小部件区域。

窗口标题设置为 title。当 QDockWidget 停靠或解除停靠时使用此标题。它还用于 QMainWindow 提供的上下文菜单中。

另请参阅

setWindowTitle()

__init__([parent=None[, flags=Qt.WindowFlags()]])
参数:

使用父对象 parent 和窗口标志 flags 构造一个 QDockWidget。停靠小部件将被放置在左侧停靠小部件区域。

allowedAreas()#
返回类型::

组合 DockWidgetArea

另请参阅

setAllowedAreas()

属性 allowedAreasᅟ 的获取器。

allowedAreasChanged(allowedAreas)#
参数:

allowedAreasDockWidgetArea 组合

当属性 allowedAreas 改变时,会发出此信号。`allowedAreas` 参数提供了属性的新的值。

属性 allowedAreasᅟ 的通知信号。

dockLocationChanged(area)#
参数:

areaDockWidgetArea

此信号会在停靠小部件被移动到另一个停靠区域,或者移动到当前停靠区域内的不同位置时发出。这发生在停靠小部件被编程移动或由用户拖动到新位置时。

features()#
返回类型::

DockWidgetFeature 的组合

另请参阅

setFeatures()

属性 features 的获取器。

featuresChanged(features)#
参数:

featuresDockWidgetFeature 的组合

features 属性改变时发出此信号。参数 features 给出属性的新值。

属性 features 的通知信号。

initStyleOption(option)#
参数:

optionQStyleOptionDockWidget

使用此 QDockWidget 的值初始化 option。此方法对于需要 QStyleOptionDockWidget 但不想自行填写所有信息的子类很有用。

另请参阅

initFrom()

isAreaAllowed(area)#
参数:

areaDockWidgetArea

返回类型::

bool

如果此次停靠小部件可以放置在指定的 area 中,则返回 true;否则返回 false

isFloating()#
返回类型::

bool

属性 floatingᅟ 的获取器。

setAllowedAreas(areas)#
参数:

areasDockWidgetArea 组合

另请参阅

allowedAreas()

属性 allowedAreasᅟ 的设置器。

setFeatures(features)#
参数:

featuresDockWidgetFeature 的组合

另请参阅

features()

属性 featuresᅟ 的设置器。

setFloating(floating)#
参数:

floating –布尔值

另请参阅

isFloating()

属性 floatingᅟ 的设置器。

setTitleBarWidget(widget)#
参数:

widgetQWidget

注意

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

设置一个任意的 widget 作为停靠小部件的标题栏。如果 widgetNone,则删除之前在停靠小部件上设置的任何自定义标题栏小部件,但不删除,而是使用默认标题栏。

如果设置了标题栏小部件,当 QDockWidget 浮动时,它将不会使用原生窗口装饰。

以下是一些实现自定义标题栏的提示

  • 未由标题栏小部件显式处理的鼠标事件必须通过调用 QMouseEvent::ignore() 进行忽略。然后这些事件传播到 QDockWidget 父级,它将按照常规方式处理它们,如拖动标题栏时移动,双击时停靠和解停靠等。

  • DockWidgetVerticalTitleBar 设置在 QDockWidget 上时,标题栏控件将相应地重新定位。在 resizeEvent() 中,标题栏应检查应采取的朝向。

    dockWidget = QDockWidget(parentWidget())
    if dockWidget.features()  QDockWidget.DockWidgetVerticalTitleBar:
        # I need to be vertical
    else:
        # I need to be horizontal
    
  • 标题栏控件必须具有有效的 sizeHint()minimumSizeHint()。这些函数应考虑标题栏的当前朝向。

  • 无法从停靠窗口中删除标题栏。但是,可以通过设定一个默认构造的 QWidget 作为标题栏控件来实现类似的效果。

如上所示使用 qobject_cast(),标题栏控件可以完全访问其父 QDockWidget。因此,它可以执行诸如停靠和隐藏等操作以响应用户动作。

setWidget(widget)#
参数:

widgetQWidget

将停靠窗口的控件设置为 widget

如果在 widget 添加时停靠窗口可见,必须显式地调用 show()

请注意,在调用此函数之前必须添加 widget 的布局;否则,控件将不可见。

另请参阅

widget()

titleBarWidget()#
返回类型::

QWidget

返回固定在 QDockWidget 上的自定义标题栏控件,如果没有设置自定义标题栏,则返回 None

另请参阅

setTitleBarWidget()

toggleViewAction()#
返回类型::

QAction

返回一个可复选的操作,可以将其添加到菜单和工具栏中,以便用户可以显示或关闭此停靠窗口。

操作的文本设置为停靠窗口的窗口标题。

注意

此动作无法用于编程方式显示或隐藏停靠小部件。请使用 visible 属性进行此操作。

另请参阅

窗口标题

topLevelChanged(topLevel)#
参数:

topLevel – 布尔值

floating 属性改变时,会发出此信号。如果停靠小部件现在是浮动状态,则 topLevel 参数为 true,否则为 false。

另请参阅

isWindow()

visibilityChanged(visible)#
参数:

visible – 布尔值

当停靠小部件变为可见(或不可见)时,会发出此信号。这发生在小部件被隐藏或显示时,以及在它被停靠在标签式停靠区域中,并且其标签被选中或未选中时。

注意

此信号可能与 isVisible() 不同。这可能发生在停靠小部件最小化或标签化并关联到未选中或不活动的标签时。

widget()#
返回类型::

QWidget

返回停靠小部件的组件。如果没有设置组件,此函数返回零。

另请参阅

setWidget()