Передача обратного вызова Javascript на метод С++ Invoked в Qml

В С++ у меня есть класс с invokable функцией, то, что я хотел бы сделать, это вызвать этот метод из 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 в консоли. Как я могу определить параметр в С++ и вызвать обратный вызов, чтобы выполнить это?

Спасибо!

Ответ 1

Думаю, я понял это. То, что я закончил, это реализовать это в моем классе С++, например:

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);
}