如何通过函数指针调用方法?

时间:2017-06-14 01:42:32

标签: qt

调用方法

正常方式:

QMetaObject::invokeMethod(obj, "function");

但不是使用string。这就是我想要的:

QMetaObject::invokeMethod(obj, function());
// or any macro like SLOT
QMetaObject::invokeMethod(obj, FUNC_NAME(function()));

1 个答案:

答案 0 :(得分:0)

强烈建议您使用正常方式,即使用QMetaObject::invokeMethod(obj, "function")。但是,如果您需要,可以使用以下stringify宏:

#define FUNC_NAME(a)         (QString(#a).remove(QRegExp("\\((.*)\\)")).trimmed().toLatin1().constData())

//usage
QMetaObject::invokeMethod(obj, FUNC_NAME(function()));

上面的宏转换参数为string然后删除(...)之间的方法/函数参数。