Trong C++ Tôi có một lớp với hàm không thể invoke, điều tôi muốn làm là gọi phương thức đó từ QML/Javascript (điều này tôi đã làm việc) và vượt qua nó là một cuộc gọi lại Javascript.Chuyển một cuộc gọi lại Javascript tới phương thức gọi C++ trong Qml
Trong mã, tôi xác định lớp học của tôi như:
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);
}
};
Và trong QML của tôi, tôi muốn làm một cái gì đó như:
Rectangle {
function myCallback(x){
console.log("x=" + x);
}
MouseArea{
anchors.fill: parent
onClicked:{
myObject.doSomething(2, myCallback);
}
}
}
Vì vậy mà khi tôi bấm vào Rectangle
, tôi sẽ thấy x=3
trong bảng điều khiển. Làm thế nào tôi sẽ xác định các tham số trong C + + và gọi gọi lại để thực hiện điều này?
Cảm ơn bạn!
Ngoài ra nếu bạn sử dụng chức năng lambda bên trong function (ví dụ, sau khi trả lời mạng), chuyển QJSValue thành giá trị có thể thay đổi \. – Alexander