Add*_*ddy 11 javascript qt qml qtquick2
在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);
}
};
Run Code Online (Sandbox Code Playgroud)
在我的QML中,我想做的事情如下:
Rectangle {
function myCallback(x){
console.log("x=" + x);
}
MouseArea{
anchors.fill: parent
onClicked:{
myObject.doSomething(2, myCallback);
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以当我点击时Rectangle,我会x=3在控制台中看到.如何在C++中定义参数并调用回调以实现此目的?
谢谢!
Add*_*ddy 14
我想我已经弄明白了.我最终做的是在我的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 });
}
};
Run Code Online (Sandbox Code Playgroud)
然后我可以在我的回调中访问值,如:
function myCallback(x){
console.log("x=" + x.x);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2252 次 |
| 最近记录: |