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

本文介绍如何在QML中调用C++函数,并实现从C++回调QML函数的功能。通过具体代码示例,展示了如何在C++类中定义可被QML调用的方法,并传入QML函数作为回调,实现跨语言交互。
491

被折叠的 条评论
为什么被折叠?



