如何从C ++调用非参数化的QML函数

时间:2016-12-28 11:52:17

标签: javascript c++ qt qml

我试图在我的QML中调用一个函数:

function resetSomething() {
    tempVar= undefined
}

我不知道如何为这个函数编写invokeMethod。 我尝试过使用类似的东西:

QQuickItem* qObj= findChild<QQuickItem>("temp");
if (qObj)
{
    QVariant returnArg;
    QMetaObject::invokeMethod(qObj, "resetSomething",Q_RETURN_ARG,QVariant,returnArg));
}

但它给出了错误

  

找不到匹配函数resetSomething(QVariant)。

1 个答案:

答案 0 :(得分:1)

正如您在错误消息中看到的,Qt的元对象系统正在尝试查找方法resetSomething( QVariant ),但您的方法没有任何参数。我想这是因为错误的 Q_RETURN_ARG 宏用法。
似乎你可以简单地修复它:

QVariant returnArg;
QMetaObject::invokeMethod(qObj, "resetSomething", Qt::DirectConnection,
                          Q_RETURN_ARG(QVariant, returnArg));

另外,我建议你阅读官方Qt documentation,这很棒。

来自Google的BTW:Nice repo,有很多C ++ / JavaScript互通。你可以在那里找到很多有用的模式。