这是代码:
void invokeQMLFunction2Arg(QObject * object, QString func, QVariant p1, QVariant p2) {
QMetaObject::invokeMethod(object, func, Qt::DirectConnection, Q_ARG(QVariant, p1), Q_ARG(QVariant, p2));
}
这是错误:
error: no matching function for call to 'QMetaObject::invokeMethod(QObject*&, QString&, Qt::ConnectionType, QArgument<QVariant>, QArgument<QVariant>)'
我错过了什么?我使用指针调用 invokeMethod()
,但编译器提示它是指针引用。
最佳答案
您正在尝试将 QString 传递给第二个参数,而它应该是 const char*
。将其转换为正确的类型,因为没有隐式转换。您需要决定以哪种方式将其转换为 QByteArray
首先,这是您可能会编写的一个示例:
QMetaObject::invokeMethod(object, func.toUtf8().constData(), Qt::DirectConnection, Q_ARG(QVariant, p1), Q_ARG(QVariant, p2));
关于c++ - 没有匹配的函数可供调用 - 编译器说我在调用是 (QObject *) 时调用 (QObject *&),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23197572/