簡體   English   中英

將Javascript回調傳遞給Qml中的C ++ Invoked方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM