[英]Passing a Javascript callback to a C++ Invoked method in Qml
在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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.