在 C++ 中,我有一个带有可调用函数的类,我想做的是从 QML/Javascript 调用该方法(我已经开始工作)并向其传递一个 Javascript 回调。
在代码中,我定义我的类如下:
class MyObject: public QObject
{
Q_OBJECT
public:
Q_INVOKABLE void doSomething(quint64 x, /* what goes here? */ jsCallback)
{
x += 1;
// I suspect this will require a invocation mechanism but
// this shows what I'd like to do
jsCallback(x);
}
};
在我的 QML 中,我想做这样的事情:
Rectangle {
function myCallback(x){
console.log("x=" + x);
}
MouseArea{
anchors.fill: parent
onClicked:{
myObject.doSomething(2, myCallback);
}
}
}
这样当我点击Rectangle
, 我会看见x=3
在控制台中。我将如何在 C++ 中定义参数并调用回调来完成此任务?
谢谢你!
我想我已经明白了这一点。我最终做的是在我的 C++ 类中实现它,如下所示:
class MyObject: public QObject
{
Q_OBJECT
public:
Q_INVOKABLE void doSomething(quint64 x, QJSValue jsCallback)
{
x += 1;
QJSValue val = jsCallback.engine()->newObject();
val.setProperty("x", x);
jsCallback.call(QJSValueList { val });
}
};
然后我可以访问回调中的值,如下所示:
function myCallback(x){
console.log("x=" + x.x);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)