PySide6.QtCore.QMetaMethod

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()
Return type:

访问

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

注意

信号总是公开的,但你应该将其视为实现细节。从类外部发出信号几乎总是一个坏主意。

另请参阅

methodType()

enclosingMetaObject()
Return type:

QMetaObject

static fromSignal(signal)
Parameters:

signalPySideSignalInstance

Return type:

QMetaMethod

返回与给定信号对应的元方法,如果信号不是类的信号,则返回无效的QMetaMethod。

invoke(object, val0[, val1=QGenericArgument()[, val2=QGenericArgument()[, val3=QGenericArgument()[, val4=QGenericArgument()[, val5=QGenericArgument()[, val6=QGenericArgument()[, val7=QGenericArgument()[, val8=QGenericArgument()[, val9=QGenericArgument()]]]]]]]]])
Parameters:
Return type:

布尔

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

此函数重载了 invoke()

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

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

  • val0QGenericArgumentHolder

  • val1QGenericArgumentHolder

  • val2QGenericArgumentHolder

  • val3QGenericArgumentHolder

  • val4QGenericArgumentHolder

  • val5QGenericArgumentHolder

  • val6QGenericArgumentHolder

  • val7QGenericArgumentHolder

  • val8QGenericArgumentHolder

  • val9QGenericArgumentHolder

Return type:

对象

invoke(object, returnValue[, val0=QGenericArgument(nullptr)[, val1=QGenericArgument()[, val2=QGenericArgument()[, val3=QGenericArgument()[, val4=QGenericArgument()[, val5=QGenericArgument()[, val6=QGenericArgument()[, val7=QGenericArgument()[, val8=QGenericArgument()[, val9=QGenericArgument()]]]]]]]]]])
Parameters:
Return type:

布尔

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

此函数重载了 invoke()

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

invoke(object, connectionType, val0[, val1=QGenericArgument()[, val2=QGenericArgument()[, val3=QGenericArgument()[, val4=QGenericArgument()[, val5=QGenericArgument()[, val6=QGenericArgument()[, val7=QGenericArgument()[, val8=QGenericArgument()[, val9=QGenericArgument()]]]]]]]]])
Parameters:
Return type:

布尔

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

此函数重载了 invoke()

如果对成员的返回值不感兴趣,可以使用此重载。

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

  • typeConnectionType

  • val0QGenericArgumentHolder

  • val1QGenericArgumentHolder

  • val2QGenericArgumentHolder

  • val3QGenericArgumentHolder

  • val4QGenericArgumentHolder

  • val5QGenericArgumentHolder

  • val6QGenericArgumentHolder

  • val7QGenericArgumentHolder

  • val8QGenericArgumentHolder

  • val9QGenericArgumentHolder

Return type:

对象

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

  • retQGenericReturnArgumentHolder

  • val0QGenericArgumentHolder

  • val1QGenericArgumentHolder

  • val2QGenericArgumentHolder

  • val3QGenericArgumentHolder

  • val4QGenericArgumentHolder

  • val5QGenericArgumentHolder

  • val6QGenericArgumentHolder

  • val7QGenericArgumentHolder

  • val8QGenericArgumentHolder

  • val9QGenericArgumentHolder

Return type:

对象

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()]]]]]]]]]])
Parameters:
Return type:

布尔

警告

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

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

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

有关更多信息,请参见可变参数 invokeMethod() 函数。此函数的行为应与该函数相同,但有以下限制:

  • 参数的数量限制为10。

  • 参数名称可能需要完全匹配的字符串。

  • 元类型不会自动注册。

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

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

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

警告

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

另请参阅

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

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

  • typeConnectionType

  • retQGenericReturnArgumentHolder

  • val0QGenericArgumentHolder

  • val1QGenericArgumentHolder

  • val2QGenericArgumentHolder

  • val3QGenericArgumentHolder

  • val4QGenericArgumentHolder

  • val5QGenericArgumentHolder

  • val6QGenericArgumentHolder

  • val7QGenericArgumentHolder

  • val8QGenericArgumentHolder

  • val9QGenericArgumentHolder

Return type:

对象

invokeOnGadget(gadget, val0[, val1=QGenericArgument()[, val2=QGenericArgument()[, val3=QGenericArgument()[, val4=QGenericArgument()[, val5=QGenericArgument()[, val6=QGenericArgument()[, val7=QGenericArgument()[, val8=QGenericArgument()[, val9=QGenericArgument()]]]]]]]]])
Parameters:
Return type:

布尔

这是一个重载函数。

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

此重载为 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()]]]]]]]]]])
Parameters:
Return type:

布尔

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

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

有关更多信息,请参见可变参数 invokeMethod() 函数。此函数的行为应与该函数相同,但有以下限制:

  • 参数的数量限制为10。

  • 参数名称可能需要完全匹配的字符串。

  • 元类型不会自动注册。

警告

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

另请参阅

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

isConst()
Return type:

布尔

返回方法是否为const限定。

注意

如果该方法属于针对旧版本Qt编译的库,则此方法可能会错误地返回false

isValid()
Return type:

布尔

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

methodIndex()
Return type:

整数

返回此方法的索引。

methodSignature()
Return type:

QByteArray

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

methodType()
Return type:

MethodType

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

另请参阅

access()

name()
Return type:

QByteArray

返回此方法的名称。

__ne__(rhs)
Parameters:

rhsQMetaMethod

Return type:

布尔

这是一个重载函数。

如果方法 lhs 不等于方法 rhs,则返回 true,否则返回 false

__eq__(rhs)
Parameters:

rhsQMetaMethod

Return type:

布尔

这是一个重载函数。

如果方法 lhs 等于方法 rhs,则返回 true,否则返回 false

parameterCount()
Return type:

整数

返回此方法的参数数量。

parameterMetaType(index)
Parameters:

索引 – int

Return type:

QMetaType

返回给定index处参数的元类型。

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

parameterNames()
Return type:

.list of QByteArray

返回参数名称的列表。

parameterType(index)
Parameters:

索引 – int

Return type:

整数

返回给定index处参数的类型。

返回值是注册在QMetaType中的类型之一,如果类型未注册,则返回UnknownType

parameterTypeName(index)
Parameters:

索引 – int

Return type:

QByteArray

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

另请参阅

parameterNames()

parameterTypes()
Return type:

.list of QByteArray

返回参数类型的列表。

relativeMethodIndex()
Return type:

整数

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

returnMetaType()
Return type:

QMetaType

返回此方法的返回类型。

returnType()
Return type:

整数

返回此方法的返回类型。

返回值是注册在QMetaType中的类型之一,如果类型未注册,则返回UnknownType

revision()
Return type:

整数

如果通过Q_REVISION指定了方法修订版本,则返回该版本,否则返回0。自Qt 6.0起,非零值被编码,并且可以使用fromEncodedVersion()进行解码。

tag()
Return type:

字符串

警告

本节包含从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 包围定义,如上例所示。

typeName()
Return type:

字符串

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

另请参阅

returnType() type()