PySide6.QtWidgets.QWidgetAction¶
- class QWidgetAction¶
QWidgetAction
类通过一个接口扩展了 QAction,用于将自定义小部件插入到基于动作的容器中,例如工具栏。更多…概要¶
方法¶
def
__init__()
def
createdWidgets()
def
defaultWidget()
def
releaseWidget()
def
requestWidget()
虚拟方法¶
def
createWidget()
def
deleteWidget()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
应用程序中的大多数操作都表示为菜单中的项目或工具栏中的按钮。然而,有时需要更复杂的小部件。例如,文字处理器中的缩放操作可以通过在
QToolBar
中使用QComboBox
来实现,展示一系列不同的缩放级别。QToolBar
提供了insertWidget()
作为插入单个小部件的便捷函数。然而,如果你想实现一个使用自定义小部件在多个容器中进行可视化的操作,那么你必须子类化QWidgetAction
。如果将一个
QWidgetAction
添加到例如QToolBar
中,则会调用createWidget()
。该函数的重新实现应创建一个具有指定父级的新自定义小部件。如果从容器小部件中移除操作,则会调用
deleteWidget()
,并将之前创建的自定义小部件作为参数传递。默认实现会隐藏小部件并使用QObject::deleteLater()删除它。如果你只有一个自定义小部件,那么你可以使用
setDefaultWidget()
将其设置为默认小部件。如果该动作被添加到QToolBar
,或者通常添加到支持QWidgetAction
的动作容器中,那么该小部件将被使用。如果一个只有默认小部件的QWidgetAction
同时被添加到两个工具栏中,那么默认小部件只会在第一个添加该动作的工具栏中显示。QWidgetAction
将接管默认小部件的所有权。请注意,激活操作取决于小部件,例如通过重新实现鼠标事件处理程序并调用 QAction::trigger()。
macOS: 如果你在macOS的应用程序菜单栏中添加一个小部件,该小部件将被添加并且可以工作,但有一些限制:
使用
parent
构造一个动作。每当将操作添加到支持自定义小部件的容器小部件时,都会调用此函数。如果您不希望自定义小部件用作指定
parent
小部件中操作的表示形式,则应返回0。另请参阅
返回已使用
createWidget()
并且当前正在被操作添加到的部件使用的部件列表。返回默认的小部件。
另请参阅
每当从使用自定义
widget
显示操作的容器小部件中移除操作时,都会调用此函数,该小部件之前是使用createWidget()
创建的。默认实现隐藏widget
并使用QObject::deleteLater()安排其删除。另请参阅
释放指定的
widget
。当小部件操作被移除时,支持操作的小部件容器会调用此函数。
返回一个表示操作的小部件,具有给定的
parent
。支持操作的容器小部件可以调用此函数来请求一个小部件作为操作的可视化表示。
将
widget
设置为默认小部件。所有权转移到QWidgetAction
。除非子类重新实现了createWidget()
以返回一个新的小部件,否则当容器小部件通过requestWidget()
请求小部件时,将使用默认小部件。另请参阅