PySide6.QtDesigner.QDesignerMemberSheet扩展

class QDesignerMemberSheetExtension

QDesignerMemberSheetExtension 类允许您操作小部件的成员函数,这些函数在使用 Qt Widgets Designer 的模式编辑信号和槽时配置连接时会显示。更多

概要

方法

虚拟方法

注意

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

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

QDesignerMemberSheetExtension 是一个函数集合,通常用于查询小部件的成员函数,并在 Qt Widgets Designer 的信号和槽编辑模式中操作成员函数的外观。例如:

memberSheet = None
manager = formEditor.extensionManager()
memberSheet = qt_extension<QDesignerMemberSheetExtension*>(manager, widget)
index = memberSheet.indexOf(setEchoMode)
memberSheet.setVisible(index, False)
del memberSheet

在实现自定义小部件插件时,指向Qt Widgets Designer当前的QDesignerFormEditorInterface对象(在上面的示例中为formEditor)的指针由initialize()函数的参数提供。

成员表(以及任何其他扩展),可以通过使用qt_extension()函数查询Qt Widgets Designer的扩展管理器来获取。当你想释放扩展时,只需删除指针。

所有小部件都有一个默认的成员表,用于Qt小部件设计器的信号和槽编辑模式,以及小部件的成员函数。但是QDesignerMemberSheetExtension也提供了一个接口,用于创建自定义的成员表扩展。

警告

Qt Widgets Designer 使用 QDesignerMemberSheetExtension 来方便信号和槽的编辑模式。每当请求两个小部件之间的连接时,Qt Widgets Designer 将查询小部件的成员表扩展。如果一个小部件实现了成员表扩展,此扩展将覆盖默认的成员表。

要创建一个成员表扩展,您的扩展类必须继承自 QObject 和 QDesignerMemberSheetExtension。然后,由于我们正在实现一个接口,我们必须确保它通过 Q_INTERFACES() 宏被元对象系统识别:

class MyMemberSheetExtension(QObject,
        public QDesignerMemberSheetExtension

    Q_OBJECT
    Q_INTERFACES(QDesignerMemberSheetExtension)
# public
    ...

这使得 Qt Widgets Designer 能够使用 qobject_cast() 仅通过 QObject 指针来查询支持的接口。

在Qt Widgets Designer中,扩展在需要时才会被创建。因此,在实现成员表扩展时,您还必须创建一个QExtensionFactory,即一个能够创建您的扩展实例的类,并使用Qt Widgets Designer的extension manager进行注册。

当需要一个小部件的成员表扩展时,Qt Widgets Designer 的 extension manager 将遍历所有已注册的工厂,为每个工厂调用 createExtension(),直到找到第一个能够为该小部件创建成员表扩展的工厂。然后,该工厂将创建扩展的实例。如果未找到此类工厂,Qt Widgets Designer 将使用默认的成员表。

Qt Widgets Designer 中有四种可用的扩展类型:QDesignerContainerExtensionQDesignerMemberSheetExtensionQDesignerPropertySheetExtensionQDesignerTaskMenuExtension。无论请求的扩展是与多页容器、成员表、属性表还是任务菜单相关联,Qt Widgets Designer 的行为都是相同的。

QExtensionFactory 类提供了一个标准的扩展工厂,也可以用作自定义扩展工厂的接口。你可以创建一个新的 QExtensionFactory 并重新实现 createExtension() 函数。例如:

QObject ANewExtensionFactory.createExtension(QObject object,
        QString iid, QObject parent)

    if iid != Q_TYPEID(QDesignerMemberSheetExtension):
        return 0
    if (MyCustomWidget widget = qobject_cast<MyCustomWidget>
           (object))
        return MyMemberSheetExtension(widget, parent)
    return 0

或者你可以使用现有的工厂,扩展createExtension()函数,使工厂也能够创建成员表扩展。例如:

QObject AGeneralExtensionFactory.createExtension(QObject object,
        QString iid, QObject parent)

    widget = MyCustomWidget(object)
    if widget and (iid == Q_TYPEID(QDesignerTaskMenuExtension)):
        return MyTaskMenuExtension(widget, parent)
     elif widget and (iid == Q_TYPEID(QDesignerMemberSheetExtension)):
        return MyMemberSheetExtension(widget, parent)
    else:
        return 0

有关使用扩展类的完整示例,请参见任务菜单扩展示例。该示例展示了如何为Qt Designer创建自定义小部件插件,以及如何使用QDesignerTaskMenuExtension类向Qt Widgets Designer的任务菜单添加自定义项。

另请参阅

QExtensionFactory QExtensionManager 创建自定义小部件扩展

__init__()
abstract count()
Return type:

整数

返回扩展的成员函数数量。

abstract declaredInClass(index)
Parameters:

索引 – int

Return type:

字符串

返回声明具有给定index的成员函数的类的名称。

另请参阅

indexOf()

abstract indexOf(name)
Parameters:

name – str

Return type:

整数

返回由给定name指定的成员函数的索引。

另请参阅

memberName()

abstract inheritedFromWidget(index)
Parameters:

索引 – int

Return type:

布尔

如果具有给定index的成员函数是从QWidget继承的,则返回true,否则返回false。

另请参阅

indexOf()

abstract isSignal(index)
Parameters:

索引 – int

Return type:

布尔

如果具有给定index的成员函数是信号,则返回true,否则返回false。

另请参阅

indexOf()

abstract isSlot(index)
Parameters:

索引 – int

Return type:

布尔

如果具有给定index的成员函数是一个槽,则返回true,否则返回false。

另请参阅

indexOf()

abstract isVisible(index)
Parameters:

索引 – int

Return type:

布尔

如果具有给定index的成员函数在Qt Widgets Designer的信号和槽编辑器中可见,则返回true,否则返回false。

另请参阅

indexOf() setVisible()

abstract memberGroup(index)
Parameters:

索引 – int

Return type:

字符串

返回为具有给定index的函数指定的成员组的名称。

abstract memberName(index)
Parameters:

索引 – int

Return type:

字符串

返回具有给定index的成员函数的名称。

另请参阅

indexOf()

abstract parameterNames(index)
Parameters:

索引 – int

Return type:

.list of QByteArray

返回具有给定index的成员函数的参数名称,作为QByteArray列表。

abstract parameterTypes(index)
Parameters:

索引 – int

Return type:

.list of QByteArray

返回具有给定index的成员函数的参数类型,作为QByteArray列表。

abstract setMemberGroup(index, group)
Parameters:
  • index – 整数

  • group – str

将具有给定index的成员函数的成员组设置为group

另请参阅

indexOf() memberGroup()

abstract setVisible(index, b)
Parameters:
  • index – 整数

  • b – 布尔值

如果 visible 为 true,则在 Qt Widgets Designer 的信号和槽编辑模式下,具有给定 index 的成员函数是可见的;否则该成员函数是隐藏的。

另请参阅

indexOf() isVisible()

abstract signature(index)
Parameters:

索引 – int

Return type:

字符串

返回具有给定index的成员函数的签名。

另请参阅

indexOf()