#include "m.h" #include #include #include using namespace std; int main(){ A ma; B mb; //创建两个对象 const QMetaObject *pa=ma.metaObject(); const QMetaObject *pb=mb.metaObject(); //以下为通过 QMetaObject 的成员函数获取的信息。 int j=pa->methodCount(); /*返回对象 ma 中的成员函数数量,包括从父类 QObject 继承而来的 5 个 成员函数及本对象中的 2 个成员函数(注意,不包括 g1)、1 个信号,所以 总数为 8。*/ cout<indexOfMethod("g(int,float)"); //获取对象 ma 中的成员函数 g 的索引号。 cout<constructorCount(); //获取对象 ma 所属类中的构造函数的数量。 cout<constructorCount(); /*获取对象 mb 所属类 B 中的构造函数的数量,因类 B 无构造函数,所以 返回值为 0,此处也可看到,构造函数数量不包含父类的构造函数*/ cout<indexOfConstructor("A(int)"); //获取对象 ma 所属类中的构造函数 A(int)的索引号。 cout<indexOfSignal("gb3()"); //获取对象 ma 的信号 gb3()的索引号。 cout<indexOfSignal("f()"); /*获取对象 ma 的信号 f()的索引号。因为成员函数 f 存在,但不是信 号,所以返回值为-1。*/ cout<methodOffset(); /*获取父类的成员函数数量,包括父类A及QObject中的成员函数,总共为8。 */ cout<method(pa->indexOfMethod("g(int,float)")); QByteArray s= m.name(); //获取成员函数 g 的函数名。 cout< q=m.parameterNames(); //获取函数 g 的参数名列表 cout<