PySide6.QtDesigner.QDesignerTaskMenu扩展¶
- class QDesignerTaskMenuExtension¶
QDesignerTaskMenuExtension
类允许您向 Qt Widgets Designer 的任务菜单添加自定义菜单项。更多…概要¶
方法¶
def
__init__()
虚拟方法¶
def
taskActions()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
QDesignerTaskMenuExtension
提供了一个用于创建自定义任务菜单扩展的接口。它通常用于创建特定于 Qt Widgets Designer 插件的任务菜单项。Qt Widgets Designer 使用
QDesignerTaskMenuExtension
来填充其任务菜单。每当请求任务菜单时,Qt Widgets Designer 将查询所选小部件的任务菜单扩展。任务菜单扩展是一组QActions的集合。当选择具有指定扩展的插件时,这些操作会作为条目出现在任务菜单中。上图显示了自定义的编辑状态…操作,它出现在Qt Widgets Designer的默认任务菜单条目之外:剪切、复制、粘贴等。
要创建自定义任务菜单扩展,您的扩展类必须同时继承自 QObject 和
QDesignerTaskMenuExtension
。例如:class MyTaskMenuExtension(QObject, public QDesignerTaskMenuExtension Q_OBJECT Q_INTERFACES(QDesignerTaskMenuExtension) # public MyTaskMenuExtension(MyCustomWidget widget, QObject parent) preferredEditAction = QAction() *> = QList<QAction() # private slots def mySlot(): # private widget = MyCustomWidget() myAction = QAction()
由于我们正在实现一个接口,我们必须确保使用Q_INTERFACES()宏将其告知元对象系统。这使得Qt Widgets Designer能够仅使用QObject指针通过qobject_cast()函数查询支持的接口。
你必须重新实现
taskActions()
函数,以返回将包含在Qt Widgets Designer任务菜单中的操作列表。可选地,你可以重新实现preferredEditAction()
函数,以设置在选择你的插件并按下F2时调用的操作。首选编辑操作必须是taskActions()
返回的操作之一,如果未定义,按下F2键将被忽略。在Qt Widgets Designer中,扩展在需要时才会被创建。例如,当你在Qt Widgets Designer的工作区中右键点击一个部件时,任务菜单扩展才会被创建。因此,你还必须使用
QExtensionFactory
或其子类来构建一个扩展工厂,并使用Qt Widgets Designer的extension manager
进行注册。当需要任务菜单扩展时,Qt Widgets Designer 的
extension manager
将遍历所有已注册的工厂,为每个工厂调用createExtension()
,直到找到一个能够为所选小部件创建任务菜单扩展的工厂。然后,该工厂将创建扩展的实例。Qt Widgets Designer 中有四种可用的扩展类型:
QDesignerContainerExtension
、QDesignerMemberSheetExtension
、QDesignerPropertySheetExtension
和QDesignerTaskMenuExtension
。无论请求的扩展是与容器、成员表、属性表还是任务菜单相关联,Qt Widgets Designer 的行为都是相同的。QExtensionFactory
类提供了一个标准的扩展工厂,也可以用作自定义扩展工厂的接口。你可以创建一个新的QExtensionFactory
并重新实现createExtension()
函数。例如:QObject ANewExtensionFactory.createExtension(QObject object, QString iid, QObject parent) if iid != Q_TYPEID(QDesignerTaskMenuExtension): return 0 if MyCustomWidget widget = MyCustomWidget(object): return MyTaskMenuExtension(widget, parent) return 0
或者你可以使用现有的工厂,扩展
createExtension()
函数,使工厂也能够创建任务菜单扩展。例如:QObject AGeneralExtensionFactory.createExtension(QObject object, QString iid, QObject parent) widget = MyCustomWidget(object) if widget and (iid == Q_TYPEID(QDesignerContainerExtension)): return MyContainerExtension(widget, parent) elif widget and (iid == Q_TYPEID(QDesignerTaskMenuExtension)): return MyTaskMenuExtension(widget, parent) else: return 0
有关使用
QDesignerTaskMenuExtension
类的完整示例,请参见任务菜单扩展示例。该示例展示了如何为Qt Widgets Designer创建自定义小部件插件,以及如何使用QDesignerTaskMenuExtension
类向Qt Widgets Designer的任务菜单添加自定义项。另请参阅
QExtensionFactory
QExtensionManager
创建自定义小部件扩展- __init__()¶
返回在选择具有指定扩展名的插件并按下F2时调用的操作。
操作必须是
taskActions()
返回的操作之一。返回任务菜单扩展作为操作列表,当选择具有指定扩展的插件时,这些操作将包含在Qt Widgets Designer的任务菜单中。
必须重新实现该函数以将操作添加到列表中。