- class QDesignerTaskMenuExtension#
The
QDesignerTaskMenuExtension
class allows you to add custom menu entries to Qt Designer's task menu. More…摘要#
方法#
def
__init__()
虚函数#
注意
本文档可能包含自动从 C++ 转换为 Python 的代码段。我们始终欢迎对代码段的翻译做出贡献。如果您发现翻译有问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE 创建工单的方式告诉我们
详细描述#
警告
本节包含从 C++ 自动转换为 Python 的代码段,可能包含错误。
QDesignerTaskMenuExtension
提供了一个创建自定义任务菜单扩展的接口。它通常用于在 Qt Designer 中创建与插件相关的特定任务菜单项。Qt Designer 使用
QDesignerTaskMenuExtension
向其任务菜单提供支持。每当请求任务菜单时,Qt Designer 将查询所选小部件的任务菜单扩展。任务菜单扩展是一系列 QActions。当选择指定扩展的插件时,这些动作将出现在任务菜单中。上图显示了除 Qt Designer 默认任务菜单项之外还出现的自定义 编辑状态… 动作:剪切、复制、粘贴 等等。
要创建自定义任务菜单扩展,您的扩展类必须继承
QDesignerTaskMenuExtension
和 QObject。例如: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 Designer 能够仅使用 QObject 指针来查询支持接口的 qobject_cast() 函数。
您必须重新实现
taskActions()
函数以返回要在 Qt Designer 任务菜单中包含的操作列表。您可以可选地重新实现preferredEditAction()
函数来设置在选定插件并按 F2 键时调用的操作。首选编辑操作必须是taskActions()
返回的操作之一,如果未定义,则按 F2 键将简单地忽略。在 Qt Designer 中,扩展只有在需要时才会创建。例如,任务菜单扩展是在您在 Qt Designer 的工作区中单击小部件的右键时创建的。因此,您还必须构造一个扩展工厂,可以使用
QExtensionFactory
或其子类,并使用 Qt Designer 的扩展 管理器
进行注册。当需要任务菜单扩展时,Qt Designer 的 扩展管理器 将遍历所有已注册的工厂,为每个调用
createExtension()
,直到找到一个能够为所选小部件创建任务菜单扩展的工厂。这个工厂将创建扩展的实例。在 Qt Designer 中有四种可用的扩展类型:
QDesignerContainerExtension
,QDesignerMemberSheetExtension
,QDesignerPropertySheetExtension
,以及QDesignerTaskMenuExtension
。无论请求的扩展是否与容器、成员表单、属性表或任务菜单相关联,Qt 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 Designer 创建自定义小部件插件,以及如何使用QDesignerTaskMenuExtension
类向 Qt Designer 的任务菜单添加自定义条目。另请参阅
QExtensionFactory
、QExtensionManager
、创建自定义小部件扩展- __init__()#
返回当选择具有指定扩展的插件并按下 F2 时调用的操作。
该操作必须是
taskActions()
返回的操作之一。- 摘要 taskActions()#
- 返回类型::
QAction的列表
返回作为动作列表的任务菜单扩展,当选择具有指定扩展的插件时,这些动作将被包含在Qt Designer的任务菜单中。
必须重新实现此函数以向列表添加动作。