在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类中定义的方法名

Qt如何取类中的方法名

原文地址: https://www.cveoy.top/t/topic/ilMc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录