调用方法
正常方式:
QMetaObject::invokeMethod(obj, "function");
但不是使用string。这就是我想要的:
QMetaObject::invokeMethod(obj, function());
// or any macro like SLOT
QMetaObject::invokeMethod(obj, FUNC_NAME(function()));
答案 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然后删除(...)
之间的方法/函数参数。