- class QDockWidget#
QDockWidget类提供了一种可以停靠在
QMainWindow
内部或作为桌面上的顶层窗口浮动的QWidget。概要
属性
allowedAreas
- 可以放置停靠小部件的区域features
- 停靠小部件是否可移动、可关闭和浮动floating
- 停靠小部件是否浮动windowTitle
- 停靠小部件的标题(标签)
方法
def
__init__()
def
allowedAreas()
def
features()
def
isAreaAllowed()
def
isFloating()
定义
setWidget()
定义
widget()
虚函数#
信号#
注意
此文档可能包含从C ++自动翻译到Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译有问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建票据来告知我们
详细说明#
QDockWidget
提供了停靠部件的概念,也称为工具调色板或实用窗口。停靠窗口是放置在central widget
周围的 停靠部件区域 中作为QMainWindow的辅助窗口。用户可以将窗口拖动到当前区域内,将其移动到新区域,或浮动(例如,从窗口中取出)。
QDockWidget
API 允许程序员限制拖动小部件的移动、浮动和关闭能力,以及它们可以放置的区域。外观#
QDockWidget
包含一个标题栏和内容区域。标题栏显示拖动小部件的窗口标题、一个“浮动”按钮和一个“关闭”按钮。根据小部件的状态,这些按钮可能被禁用或者根本不显示。标题栏和按钮的视觉外观依赖于正在使用的
style
样式。QDockWidget
是通过其子小部件(通过setWidget()
设置)实现的包装器。自定义大小提示、最小最大尺寸和尺寸策略应在子小部件中实现。当QDockWidget
尊重这些限制,调整自身的约束以包含框和标题。不应该在QDockWidget
本身上设置尺寸限制,因为这些限制取决于它是被嵌入还是在浮动;嵌入的QDockWidget
没有线框并且标题栏较小。注意
在 macOS 上,如果小部件具有本地窗口句柄(例如,如果对其或子小部件调用
winId()
),则由于限制,在从窗口中取出时将无法拖动拖动小部件。开始拖动将使小部件从窗口中取出,但需要第二次拖动才能移动小部件本身。另请参阅
- 类 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 的组合#
此属性保持码头小部件是否可移动、可关闭和可浮动。
默认情况下,此属性设置为
DockWidgetClosable
、DockWidgetMovable
和DockWidgetFloatable
的组合。另请参阅
- 访问函数
- property floating: bool#
此属性保持码头小部件是否浮动。
浮动码头小部件以单个独立窗口的形式呈现给用户,位于其父
QMainWindow
上,“在顶部”而不是在QMainWindow
内或在一组选项卡式码头小部件组中。浮动码头小部件既可以通过编程也可以通过鼠标交互来单独定位和调整大小。
默认情况下,此属性为
true
。当此属性发生变化时,会发出
topLevelChanged()
信号。- 属性 windowTitle: str#
该属性持有停靠小部件的标题(标签)。
默认情况下,该属性包含一个空字符串。
访问函数
- __init__(title[, parent=None[, flags=Qt.WindowFlags()]])#
- 参数:
title – str
parent –
QWidget
flags –
WindowType
组合
使用父对象
parent
和窗口标志flags
构造一个QDockWidget
。停靠小部件将被放置在左侧停靠小部件区域。窗口标题设置为
title
。当QDockWidget
停靠或解除停靠时使用此标题。它还用于QMainWindow
提供的上下文菜单中。另请参阅
- __init__([parent=None[, flags=Qt.WindowFlags()]])
- 参数:
parent –
QWidget
flags –
WindowType
组合
使用父对象
parent
和窗口标志flags
构造一个QDockWidget
。停靠小部件将被放置在左侧停靠小部件区域。- allowedAreas()#
- 返回类型::
另请参阅
属性
allowedAreasᅟ
的获取器。- allowedAreasChanged(allowedAreas)#
- 参数:
allowedAreas –
DockWidgetArea
组合
当属性
allowedAreas
改变时,会发出此信号。`allowedAreas` 参数提供了属性的新的值。属性
allowedAreasᅟ
的通知信号。- dockLocationChanged(area)#
- 参数:
area –
DockWidgetArea
此信号会在停靠小部件被移动到另一个停靠区域,或者移动到当前停靠区域内的不同位置时发出。这发生在停靠小部件被编程移动或由用户拖动到新位置时。
- features()#
- 返回类型::
DockWidgetFeature
的组合
另请参阅
属性
features
的获取器。- featuresChanged(features)#
- 参数:
features –
DockWidgetFeature
的组合
features
属性改变时发出此信号。参数features
给出属性的新值。属性
features
的通知信号。- initStyleOption(option)#
- 参数:
option –
QStyleOptionDockWidget
使用此
QDockWidget
的值初始化option
。此方法对于需要QStyleOptionDockWidget
但不想自行填写所有信息的子类很有用。另请参阅
- isAreaAllowed(area)#
- 参数:
area –
DockWidgetArea
- 返回类型::
bool
如果此次停靠小部件可以放置在指定的
area
中,则返回true
;否则返回false
。- isFloating()#
- 返回类型::
bool
属性
floatingᅟ
的获取器。- setAllowedAreas(areas)#
- 参数:
areas –
DockWidgetArea
组合
另请参阅
属性
allowedAreasᅟ
的设置器。- setFeatures(features)#
- 参数:
features –
DockWidgetFeature
的组合
另请参阅
属性
featuresᅟ
的设置器。- setFloating(floating)#
- 参数:
floating –布尔值
另请参阅
属性
floatingᅟ
的设置器。注意
本节包含从 C++ 自动翻译到 Python 的代码片段,可能包含错误。
设置一个任意的
widget
作为停靠小部件的标题栏。如果widget
是None
,则删除之前在停靠小部件上设置的任何自定义标题栏小部件,但不删除,而是使用默认标题栏。如果设置了标题栏小部件,当
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
。因此,它可以执行诸如停靠和隐藏等操作以响应用户动作。将停靠窗口的控件设置为
widget
。如果在
widget
添加时停靠窗口可见,必须显式地调用show()
。请注意,在调用此函数之前必须添加
widget
的布局;否则,控件将不可见。另请参阅
返回固定在
QDockWidget
上的自定义标题栏控件,如果没有设置自定义标题栏,则返回None
。另请参阅
返回一个可复选的操作,可以将其添加到菜单和工具栏中,以便用户可以显示或关闭此停靠窗口。
操作的文本设置为停靠窗口的窗口标题。
- topLevelChanged(topLevel)#
- 参数:
topLevel – 布尔值
当
floating
属性改变时,会发出此信号。如果停靠小部件现在是浮动状态,则topLevel
参数为 true,否则为 false。另请参阅
- visibilityChanged(visible)#
- 参数:
visible – 布尔值
当停靠小部件变为可见(或不可见)时,会发出此信号。这发生在小部件被隐藏或显示时,以及在它被停靠在标签式停靠区域中,并且其标签被选中或未选中时。
注意
此信号可能与
isVisible()
不同。这可能发生在停靠小部件最小化或标签化并关联到未选中或不活动的标签时。返回停靠小部件的组件。如果没有设置组件,此函数返回零。
另请参阅