Qt如何取类中的方法名
在Qt中,可以使用反射机制来获取类中的方法名。以下是一个示例代码:
#include <QDebug>
#include <QMetaObject>
#include <QMetaMethod>
class MyClass : public QObject
{
Q_OBJECT
public slots:
void myMethod() {}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MyClass obj;
const QMetaObject *metaObj = obj.metaObject();
int methodCount = metaObj->methodCount();
for (int i = metaObj->methodOffset(); i < methodCount; ++i) {
QMetaMethod method = metaObj->method(i);
qDebug() << method.methodSignature();
}
return a.exec();
}
在上面的示例中,我们通过obj.metaObject()获取了MyClass对象的元对象,然后使用methodCount()方法获取了该类的方法数量。然后使用methodOffset()方法来排除掉从QObject继承来的方法,只获取该类自己定义的方法。最后使用method()方法获取每个方法的元方法对象,通过methodSignature()方法获取方法的签名(即方法名)。
运行上面的代码,会输出myMethod(),即MyClass类中定义的方法名
原文地址: https://www.cveoy.top/t/topic/ilMc 著作权归作者所有。请勿转载和采集!