class QDesignerMemberSheetExtension#

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

摘要#

方法#

虚拟方法#

注释

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

详细描述#

注意

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

QDesignerMemberSheetExtension 是一组函数集合,通常用于查询小部件的成员函数,以及在 Qt Designer 的信号和槽编辑模式下操纵成员函数的外观。例如

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

实现自定义小部件插件时,由 Qt Designer 的当前 QDesignerFormEditorInterface 对象的指针(如上例中的 formEditor)通过 initialize() 函数的参数提供。

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

所有小部件都有在 Qt Designer 的信号和槽编辑模式中使用的小部件成员函数的默认成员表单。但是 QDesignerMemberSheetExtension 还提供了一个创建自定义成员表单扩展的接口。

注意

Qt Designer 使用 QDesignerMemberSheetExtension 来简化信号和槽编辑模式。每当用户请求两个小部件之间建立连接时,Qt Designer 将查询小部件的成员表单扩展。如果小组件实现了成员表单扩展,则该扩展将覆盖默认的成员表单。

要创建成员表单扩展,您的扩展类必须继承自 QObjectQDesignerMemberSheetExtension 。由于我们正在实现一个接口,我们必须使用 Q_INTERFACES 宏确保它为元对象系统所知晓。

class MyMemberSheetExtension(QObject,
        public QDesignerMemberSheetExtension

    Q_OBJECT
    Q_INTERFACES(QDesignerMemberSheetExtension)
# public
    ...

这允许 Qt Designer 使用 qobject_cast 仅通过 QObject 指针来查询所支持的接口。

Qt Designer 中,扩展只有在需要时才会创建。因此,当实现成员表单扩展时,您还必须创建一个 QExtensionFactory 类,即能够实例化您的扩展的类,并使用 Qt Designer扩展管理器 进行注册。

当需要小部件的成员表单扩展时,Qt Designer扩展管理器 将遍历其所有注册的工厂,并对每个工厂调用 createExtension,直到找到第一个能为此小部件创建成员表单扩展的工厂。然后,该工厂将创建该扩展的实例。如果找不到这样的工厂,Qt Designer 将使用默认的成员表单。

Qt Designer 中提供了四种可用的扩展类型:QDesignerContainerExtensionQDesignerMemberSheetExtensionQDesignerPropertySheetExtensionQDesignerTaskMenuExtensionQt 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 Designer 的任务菜单中。

参见

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

__init__()#
abstract count()#
返回类型

int

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

abstract declaredInClass(index)#
参数

index – int

返回类型

str

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

参见

indexOf()

abstract indexOf(name)#
参数

name – str

返回类型

int

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

参见

memberName()

抽象 inheritedFromWidget(index)#
参数

index – int

返回类型

bool

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

参见

indexOf()

抽象 isSignal(index)#
参数

index – int

返回类型

bool

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

参见

indexOf()

抽象 isSlot(index)#
参数

index – int

返回类型

bool

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

参见

indexOf()

抽象 isVisible(index)#
参数

index – int

返回类型

bool

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

抽象 memberGroup(index)#
参数

index – int

返回类型

str

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

抽象 memberName(index)#
参数

index – int

返回类型

str

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

参见

indexOf()

抽象 parameterNames(index)#
参数

index – int

返回类型

.QByteArray 列表

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

abstract parameterTypes(index)#
参数

index – int

返回类型

.QByteArray 列表

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

abstract setMemberGroup(index, group)#
参数
  • index – int

  • group – str

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

abstract setVisible(index, b)#
参数
  • index – int

  • b – bool

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

abstract signature(index)#
参数

index – int

返回类型

str

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

参见

indexOf()