Qt子类会将每一个函数封装成QMetaMethod存储在对应的QMetaObject中,包括信号、槽函数、普通函数、构造函数、析构函数
函数解析
QMetaMethod::methodSignature
获取方法的签名
比如函数slot2,对应签名是“slot2(int*)”
QMetaMethod::name
方法名称。函数slot2,对应是“slot2”
QMetaMethod::typeName
方法的返回类型名称。函数slot2,对应是“void”
QMetaMethod::returnType
方法的返回类型序号。函数slot2,对应是43
QMetaMethod::parameterCount
参数数量。函数slot2,对应是1
QMetaMethod::parameterType
第n个参数类型。函数slot2,第一个参数类型int*对应是0
QMetaMethod::getParameterTypes
顺序获取每个参数类型,传入值为数组,大小比参数个数大。比如函数slot2,对应是{0}。
如果添加函数void slot4(int p2,double) {},对应是{2,6}。
QMetaMethod::parameterTypes
顺序获取每个参数类型字符串。比如函数slot2,对应是{“int*”}。
QMetaMethod::parameterNames
顺序获取每个参数名称字符串。比如函数slot2,对应是{“p2”}。
QMetaMethod::tag
返回与此方法关联的标记。看注释是一种特殊使用方式,目前未找到对应使用方式。获取的是函数tag属性。
QMetaMethod::access
返回函数访问权限,public、private、protect
QMetaMethod::methodType
返回函数类型,信号、槽、普通函数
QMetaMethod::attributes
函数属性。slots2函数对应的是moc中下图位置
QMetaMethod::methodIndex
获取函数的序号
QMetaMethod::revision
函数版本。函数声明前加Q_REVISION(1)代表版本。例如slot3函数
QMetaMethod::enclosingMetaObject
返回所属QMetaObject对象指针
QMetaMethod::isValid
是否有效
QMetaMethod::fromSignal
由QMetaMethod::fromSignalImpl实现。从子类到父类找到目标信号
QMetaMethod::fromSignalImpl
从子类到父类找到目标信号
QMetaMethod::invoke
与信号建立连接。Qt的Connection函数实际上调用这个函数实现信号槽绑定.
QMetaMethod::invokeOnGadget
与信号建立连接。Q_GADGET的类专用