【发布时间】:2014-04-21 12:35:47
【问题描述】:
这是代码:
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(),但编译器抱怨它是指针引用。
【问题讨论】:
-
“我用指针调用invokeMethod()” 你指的“指针”不存在。您正在传递对指针的引用,甚至可能是 const 引用或 rvalue 引用,但仍然如此。编译器是正确的。按值传递参数的工作原理是传递一个 const 引用(或右值引用),然后用于初始化对象的函数本地副本。
标签: c++ qt qtcore qt-signals qmetaobject