QML C++ 混合编程 之回调
qml 调用c++ 函数并回调 qml function
c++ 中增加如下object
#include <QObject>
#include <QJSValue>
#include <QJSEngine>
#include <QJSValueList>
#include <QDebug>
class MyObject: public QObject
{
Q_OBJECT
public:
Q_INVOKABLE void doSomething(int x, QJSValue jsCallback)
{
x += 1;
qDebug() << __FUNCTION__ << x; //参数x
QJSValue val = jsCallback.engine()->toScriptValue(x);
QJSValueList paramList;
paramList.append(val);
qDebug() << jsCallback.call(paramList).toBool(); //js fucntion的返回值
}
};
qml中调用
MyObject
{
id:myobj
}
Button{
text:qsTr("complete items")
onClicked: {
myobj.doSomething(444,function(x){
console.log("c++ js callback",x)
return true;
})
}
##输出
MyObject::doSomething 445
qml: c++ js callback 445
true