- class QMetaMethod#
QMetaMethod
类提供了关于成员函数的元数据。 更多…概述#
方法#
def
__init__()
def
access()
def
invoke()
def
invokeOnGadget()
def
isConst()
def
isValid()
def
methodIndex()
def
methodType()
def
name()
定义
__ne__()
定义
__eq__()
定义
returnType()
定义
revision()
定义
tag()
定义
typeName()
静态函数#
定义
fromSignal()
注意
此文档可能包含从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__()#
返回此方法的访问指定(私有、受保护或公共)。
- enclosingMetaObject()#
- 返回类型:
- static fromSignal(signal)#
- 参数:
信号 –
PySideSignalInstance
- 返回类型:
返回与给定信号对应的元方法,或者在信号不是类的信号时返回无效的 QMetaMethod。
- invoke(object, val0[, val1=QGenericArgument()[, val2=QGenericArgument()[, val3=QGenericArgument()[, val4=QGenericArgument()[, val5=QGenericArgument()[, val6=QGenericArgument()[, val7=QGenericArgument()[, val8=QGenericArgument()[, val9=QGenericArgument()]]]]]]]]])
- 参数:
object –
QObject
val0 –
QGenericArgument
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()]]]]]]]])
- 参数:
object –
QObject
returnValue –
QGenericReturnArgument
val0 –
QGenericArgument
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()]]]]]]]])
- 参数:
object –
QObject
connectionType –
ConnectionType
val0 –
QGenericArgument
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()]]]]]]])
- 参数:
object –
QObject
connectionType –
ConnectionType
returnValue –
QGenericReturnArgument
val0 –
QGenericArgument
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={}]]]]]]]]])
- 参数:
object –
QObject
类型 –
ConnectionType
val0 –
QGenericArgumentHolder
val1 –
QGenericArgumentHolder
val2 –
QGenericArgumentHolder
val3 –
QGenericArgumentHolder
val4 –
QGenericArgumentHolder
val5 –
QGenericArgumentHolder
val6 –
QGenericArgumentHolder
val7 –
QGenericArgumentHolder
val8 –
QGenericArgumentHolder
val9 –
QGenericArgumentHolder
- 返回类型:
对象
- 调用(对象, 类型, 返回值[, val0={}[, val1={}[, val2={}[, val3={}[, val4={}[, val5={}[, val6={}[, val7={}[, val8={}[, val9={}]]]]]]]])
- 参数:
object –
QObject
类型 –
ConnectionType
返回值 –
QGenericReturnArgumentHolder
val0 –
QGenericArgumentHolder
val1 –
QGenericArgumentHolder
val2 –
QGenericArgumentHolder
val3 –
QGenericArgumentHolder
val4 –
QGenericArgumentHolder
val5 –
QGenericArgumentHolder
val6 –
QGenericArgumentHolder
val7 –
QGenericArgumentHolder
val8 –
QGenericArgumentHolder
val9 –
QGenericArgumentHolder
- 返回类型:
对象
- invoke(object[, val0={}[, val1={}[, val2={}[, val3={}[, val4={}[, val5={}[, val6={}[, val7={}[, val8={}[, val9={}]]]]]]]])
- 参数:
object –
QObject
val0 –
QGenericArgumentHolder
val1 –
QGenericArgumentHolder
val2 –
QGenericArgumentHolder
val3 –
QGenericArgumentHolder
val4 –
QGenericArgumentHolder
val5 –
QGenericArgumentHolder
val6 –
QGenericArgumentHolder
val7 –
QGenericArgumentHolder
val8 –
QGenericArgumentHolder
val9 –
QGenericArgumentHolder
- 返回类型:
对象
- invoke(object, ret[, val0={}[, val1={}[, val2={}[, val3={}[, val4={}[, val5={}[, val6={}[, val7={}[, val8={}[, val9={}]]]]]]]]])
- 参数:
object –
QObject
返回值 –
QGenericReturnArgumentHolder
val0 –
QGenericArgumentHolder
val1 –
QGenericArgumentHolder
val2 –
QGenericArgumentHolder
val3 –
QGenericArgumentHolder
val4 –
QGenericArgumentHolder
val5 –
QGenericArgumentHolder
val6 –
QGenericArgumentHolder
val7 –
QGenericArgumentHolder
val8 –
QGenericArgumentHolder
val9 –
QGenericArgumentHolder
- 返回类型:
对象
- invokeOnGadget(gadget, val0[, val1=QGenericArgument()[, val2=QGenericArgument()[, val3=QGenericArgument()[, val4=QGenericArgument()[, val5=QGenericArgument()[, val6=QGenericArgument()[, val7=QGenericArgument()[, val8=QGenericArgument()[, val9=QGenericArgument()]]]]]]]])#
- 参数:
gadget –
void
val0 –
QGenericArgument
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()]]]]]]]]])
- 参数:
gadget –
void
returnValue –
QGenericReturnArgument
val0 –
QGenericArgument
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()#
- 返回类型:
返回此方法的签名(例如:
setValue(double)
)。- methodType()#
- 返回类型:
返回此方法的类型(信号、槽或方法)。
另请参阅
- name()#
- 返回类型:
返回此方法的名称。
- __ne__(m2)#
- 参数:
m2 –
QMetaMethod
- 返回类型:
bool
这是一个重载函数。
如果方法
m1
不等于方法m2
,则返回true
,否则返回false
。- __eq__(m2)#
- 参数:
m2 –
QMetaMethod
- 返回类型:
bool
这是一个重载函数。
如果方法
m1
等于方法m2
,则返回true
,否则返回false
。- parameterCount()#
- 返回类型:
int
返回此方法的参数数量。
返回指定
index
的参数的元类型。如果
index
小于零或大于parameterCount()
返回的值,则返回无效的QMetaType
。- parameterNames()#
- 返回类型:
QByteArray 的 .list
返回参数名称列表。
- parameterType(index)#
- 参数:
index – int
- 返回类型:
int
返回给定
index
的参数类型。返回值是已在
QMetaType
中注册的类型之一,或者如果类型没有注册,则返回UnknownType
。- parameterTypeName(index)#
- 参数:
index – int
- 返回类型:
返回位于
index
位置的类型名称。如果index
没有参数,则返回一个空的QByteArray
。另请参阅
- parameterTypes()#
- 返回类型:
QByteArray 的 .list
返回参数类型的列表。
- relativeMethodIndex()#
- 返回类型:
int
返回此方法内部的本地索引。
返回此方法的返回类型。
- 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
返回此方法的返回类型名称。
另请参阅