class QMetaMethod#

QMetaMethod类提供了关于成员函数的元数据。 更多

概述#

方法#

静态函数#

注意

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

详细描述#

一个 QMetaMethod 有一个 methodType(), 一个 methodSignature(), 一个 parameterTypes() 列表和一个 parameterNames(),一个返回的 typeName(),一个 tag(),以及一个 access() 指定器。您可以使用 invoke() 方法来在一个任意的 QObject 上调用该方法。

class Access#

此枚举描述了方法的访问级别,遵循 C++ 中使用的约定。

常量

描述

QMetaMethod.Private

QMetaMethod.Protected

QMetaMethod.Public

class MethodType#

常量

描述

QMetaMethod.Method

该函数是一个普通成员函数。

QMetaMethod.Signal

该函数是一个信号。

QMetaMethod.Slot

该函数是一个槽。

QMetaMethod.Constructor

该函数是一个构造函数。

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

Access

返回此方法的访问指定(私有、受保护或公共)。

注意

信号总是公共的,但您应将其视为实现细节。从类外部发出信号几乎总是件糟糕的事情。

另请参阅

methodType()

enclosingMetaObject()#
返回类型:

QMetaObject

static fromSignal(signal)#
参数:

信号PySideSignalInstance

返回类型:

QMetaMethod

返回与给定信号对应的元方法,或者在信号不是类的信号时返回无效的 QMetaMethod。

invoke(object, val0[, val1=QGenericArgument()[, val2=QGenericArgument()[, val3=QGenericArgument()[, val4=QGenericArgument()[, val5=QGenericArgument()[, val6=QGenericArgument()[, val7=QGenericArgument()[, val8=QGenericArgument()[, val9=QGenericArgument()]]]]]]]]])
参数:
返回类型:

bool

请使用此函数的可变参数重载版本

此函数重载了 invoke()

此重载使用 AutoConnection 连接类型调用此方法,并忽略返回值。

invoke(object, returnValue[, val0=QGenericArgument(nullptr)[, val1=QGenericArgument()[, val2=QGenericArgument()[, val3=QGenericArgument()[, val4=QGenericArgument()[, val5=QGenericArgument()[, val6=QGenericArgument()[, val7=QGenericArgument()[, val8=QGenericArgument()[, val9=QGenericArgument()]]]]]]]])
参数:
返回类型:

bool

请使用此函数的可变参数重载版本

此函数重载了 invoke()

此重载始终以连接类型AutoConnection调用此方法。

invoke(object, connectionType, val0[, val1=QGenericArgument()[, val2=QGenericArgument()[, val3=QGenericArgument()[, val4=QGenericArgument()[, val5=QGenericArgument()[, val6=QGenericArgument()[, val7=QGenericArgument()[, val8=QGenericArgument()[, val9=QGenericArgument()]]]]]]]])
参数:
返回类型:

bool

请使用此函数的可变参数重载版本

此函数重载了 invoke()

如果成员的返回值不受关注,可以使用此重载。

调用(object, connectionType, returnValue[, val0=QGenericArgument(nullptr)[, val1=QGenericArgument()[, val2=QGenericArgument()[, val3=QGenericArgument()[, val4=QGenericArgument()[, val5=QGenericArgument()[, val6=QGenericArgument()[, val7=QGenericArgument()[, val8=QGenericArgument()[, val9=QGenericArgument()]]]]]]])
参数:
返回类型:

bool

警告

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

请使用此函数的可变参数重载版本

在对象 object 上调用此方法。如果成员可以调用,则返回true。如果没有此成员或参数不匹配,则返回false

有关更多信息,请参阅可变参数调用invokeMethod()函数。此函数应与那个函数表现相同,但有以下限制

  • 参数数量限制为10。

  • 参数名称可能需要进行精确字符串匹配。

  • 元类型将不会自动注册。

对于异步方法调用,参数必须是Qt元对象系统中已知类型的,因为Qt需要在幕后的事件中复制参数来存储它们。如果您尝试使用排队连接并收到错误消息

QMetaMethod.invoke: Unable to handle unregistered datatype 'MyType'

在调用 QMetaMethod::invoke() 之前,使用 qRegisterMetaType() 注册数据类型。

警告

除了可变参数调用invoke()的重载限制外,还必须使用与方法期望相同的参数类型,否则行为是未定义的。

另请参阅

Q_ARG() Q_RETURN_ARG() qRegisterMetaType() invokeMethod()

调用(对象, 类型[, val0={}[, val1={}[, val2={}[, val3={}[, val4={}[, val5={}[, val6={}[, val7={}[, val8={}[, val9={}]]]]]]]]])
参数:
  • objectQObject

  • 类型ConnectionType

  • val0QGenericArgumentHolder

  • val1QGenericArgumentHolder

  • val2QGenericArgumentHolder

  • val3QGenericArgumentHolder

  • val4QGenericArgumentHolder

  • val5QGenericArgumentHolder

  • val6QGenericArgumentHolder

  • val7QGenericArgumentHolder

  • val8QGenericArgumentHolder

  • val9QGenericArgumentHolder

返回类型:

对象

调用(对象, 类型, 返回值[, val0={}[, val1={}[, val2={}[, val3={}[, val4={}[, val5={}[, val6={}[, val7={}[, val8={}[, val9={}]]]]]]]])
参数:
  • objectQObject

  • 类型ConnectionType

  • 返回值QGenericReturnArgumentHolder

  • val0QGenericArgumentHolder

  • val1QGenericArgumentHolder

  • val2QGenericArgumentHolder

  • val3QGenericArgumentHolder

  • val4QGenericArgumentHolder

  • val5QGenericArgumentHolder

  • val6QGenericArgumentHolder

  • val7QGenericArgumentHolder

  • val8QGenericArgumentHolder

  • val9QGenericArgumentHolder

返回类型:

对象

invoke(object[, val0={}[, val1={}[, val2={}[, val3={}[, val4={}[, val5={}[, val6={}[, val7={}[, val8={}[, val9={}]]]]]]]])
参数:
  • objectQObject

  • val0QGenericArgumentHolder

  • val1QGenericArgumentHolder

  • val2QGenericArgumentHolder

  • val3QGenericArgumentHolder

  • val4QGenericArgumentHolder

  • val5QGenericArgumentHolder

  • val6QGenericArgumentHolder

  • val7QGenericArgumentHolder

  • val8QGenericArgumentHolder

  • val9QGenericArgumentHolder

返回类型:

对象

invoke(object, ret[, val0={}[, val1={}[, val2={}[, val3={}[, val4={}[, val5={}[, val6={}[, val7={}[, val8={}[, val9={}]]]]]]]]])
参数:
  • objectQObject

  • 返回值QGenericReturnArgumentHolder

  • val0QGenericArgumentHolder

  • val1QGenericArgumentHolder

  • val2QGenericArgumentHolder

  • val3QGenericArgumentHolder

  • val4QGenericArgumentHolder

  • val5QGenericArgumentHolder

  • val6QGenericArgumentHolder

  • val7QGenericArgumentHolder

  • val8QGenericArgumentHolder

  • val9QGenericArgumentHolder

返回类型:

对象

invokeOnGadget(gadget, val0[, val1=QGenericArgument()[, val2=QGenericArgument()[, val3=QGenericArgument()[, val4=QGenericArgument()[, val5=QGenericArgument()[, val6=QGenericArgument()[, val7=QGenericArgument()[, val8=QGenericArgument()[, val9=QGenericArgument()]]]]]]]])#
参数:
返回类型:

bool

这是一个重载函数。

请使用此函数的可变参数重载版本

此重载会为 gadget 调用此方法,并忽略返回值。

invokeOnGadget(gadget, returnValue[, val0=QGenericArgument(nullptr)[, val1=QGenericArgument()[, val2=QGenericArgument()[, val3=QGenericArgument()[, val4=QGenericArgument()[, val5=QGenericArgument()[, val6=QGenericArgument()[, val7=QGenericArgument()[, val8=QGenericArgument()[, val9=QGenericArgument()]]]]]]]]])
参数:
返回类型:

bool

请使用此函数的可变参数重载版本

Q_GADGET 上调用此方法。如果成员可以被调用,则返回 true。如果没有这样的成员或参数不匹配,则返回 false

有关更多信息,请参阅可变参数调用invokeMethod()函数。此函数应与那个函数表现相同,但有以下限制

  • 参数数量限制为10。

  • 参数名称可能需要进行精确字符串匹配。

  • 元类型将不会自动注册。

警告

除了可变参数 invoke() 的限制外,参数的类型必须与方法期望的类型相同,否则行为是未定义的。

另请参阅

Q_ARG() Q_RETURN_ARG() qRegisterMetaType() invokeMethod()

isConst()#
返回类型:

bool

返回方法是否具有 const 修饰符。

注意

此方法可能错误地返回 false,因为它的 const 方法属于与较旧版本的 Qt 编译的库。

isValid()#
返回类型:

bool

如果此方法有效(可以内省和调用),则返回 true,否则返回 false

methodIndex()#
返回类型:

int

返回此方法的索引。

methodSignature()#
返回类型:

QByteArray

返回此方法的签名(例如:setValue(double))。

methodType()#
返回类型:

MethodType

返回此方法的类型(信号、槽或方法)。

另请参阅

access()

name()#
返回类型:

QByteArray

返回此方法的名称。

__ne__(m2)#
参数:

m2QMetaMethod

返回类型:

bool

这是一个重载函数。

如果方法 m1 不等于方法 m2,则返回 true,否则返回 false

__eq__(m2)#
参数:

m2QMetaMethod

返回类型:

bool

这是一个重载函数。

如果方法 m1 等于方法 m2,则返回 true,否则返回 false

parameterCount()#
返回类型:

int

返回此方法的参数数量。

parameterMetaType(index)#
参数:

index – int

返回类型:

QMetaType

返回指定 index 的参数的元类型。

如果 index 小于零或大于 parameterCount() 返回的值,则返回无效的 QMetaType

parameterNames()#
返回类型:

QByteArray 的 .list

返回参数名称列表。

parameterType(index)#
参数:

index – int

返回类型:

int

返回给定 index 的参数类型。

返回值是已在 QMetaType 中注册的类型之一,或者如果类型没有注册,则返回 UnknownType

parameterTypeName(index)#
参数:

index – int

返回类型:

QByteArray

返回位于 index 位置的类型名称。如果 index 没有参数,则返回一个空的 QByteArray

另请参阅

parameterNames()

parameterTypes()#
返回类型:

QByteArray 的 .list

返回参数类型的列表。

relativeMethodIndex()#
返回类型:

int

返回此方法内部的本地索引。

returnMetaType()#
返回类型:

QMetaType

返回此方法的返回类型。

returnType()#
返回类型:

int

返回此方法的返回类型。

返回值是已在 QMetaType 中注册的类型之一,或者如果类型没有注册,则返回 UnknownType

revision()#
返回类型:

int

返回方法的修订版,如果通过 Q_REVISION 指定了修订版,否则返回 0。

tag()#
返回类型:

str

警告

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

返回与此方法关联的标记。

标记是 moc 所识别的特殊宏,它可以添加关于方法额外的信息。

可以在函数声明中以以下方式添加标记信息

    # In the class MainWindow declaration
    #ifndef Q_MOC_RUN
    # define the tag text as empty, so the compiler doesn't see it
    # define MY_CUSTOM_TAG
    #endif
    ...
#     private slots
        MY_CUSTOM_TAG void testFunc()

并且可以通过使用来访问这些信息

win = MainWindow()
win.show()
functionIndex = win.metaObject().indexOfSlot("testFunc()")
mm = win.metaObject().method(functionIndex)
print(mm.tag()) # prints MY_CUSTOM_TAG

目前,moc 将提取并记录所有标记,但不会特殊处理任何标记。您可以使用标记以不同的方式注释您的函数,并根据您应用程序的具体需求对其进行处理。

注意

moc 展开预处理器宏,因此需要将定义放在 #ifndef Q_MOC_RUN#endif 中,就像上面的例子一样。

typeName()#
返回类型:

str

返回此方法的返回类型名称。

另请参阅

returnType() type()