如何从C 调用非参数QML函数

How to call a non-parameterised QML function from C++

本文关键字:参数 QML 函数 调用      更新时间:2023-10-16

我试图在我的qml中调用函数:

function resetSomething() {
    tempVar= undefined
}

我不确定如何为此功能编写InvokeMethod。我尝试使用类似的东西:

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

,但它给出了错误

找不到匹配函数(qvariant)找到。

您在错误消息qt的meta对象系统中可以看到的方法正在尝试查找方法重置( qvariant ),但是您的方法没有任何参数。我想这是因为错误 q_return_arg 宏用法。
似乎您可以像这样修复它:

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

我也建议您阅读官方QT文档,这很棒。

顺便说一句:来自Google的不错仓库,其中有很多C /JavaScript间断。您可以在那里找到很多有用的模式。