class QDesignerTaskMenuExtension#

The QDesignerTaskMenuExtension class allows you to add custom menu entries to Qt Designer's task menu. More

摘要#

方法#

虚函数#

注意

本文档可能包含自动从 C++ 转换为 Python 的代码段。我们始终欢迎对代码段的翻译做出贡献。如果您发现翻译有问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE 创建工单的方式告诉我们

详细描述#

警告

本节包含从 C++ 自动转换为 Python 的代码段,可能包含错误。

QDesignerTaskMenuExtension 提供了一个创建自定义任务菜单扩展的接口。它通常用于在 Qt Designer 中创建与插件相关的特定任务菜单项。

Qt Designer 使用 QDesignerTaskMenuExtension 向其任务菜单提供支持。每当请求任务菜单时,Qt Designer 将查询所选小部件的任务菜单扩展。

../../_images/taskmenuextension-example.webp

任务菜单扩展是一系列 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 中有四种可用的扩展类型:QDesignerContainerExtensionQDesignerMemberSheetExtensionQDesignerPropertySheetExtension,以及 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 的任务菜单添加自定义条目。

另请参阅

QExtensionFactoryQExtensionManager创建自定义小部件扩展

__init__()#
preferredEditAction()#
返回类型::

QAction

返回当选择具有指定扩展的插件并按下 F2 时调用的操作。

该操作必须是 taskActions() 返回的操作之一。

摘要 taskActions()#
返回类型::

QAction的列表

返回作为动作列表的任务菜单扩展,当选择具有指定扩展的插件时,这些动作将被包含在Qt Designer的任务菜单中。

必须重新实现此函数以向列表添加动作。