2015-04-05 10 views
6

Oświadczam mojego obiektu w C++funkcja Przełęcz Java Script jako parametr do C++ funkcji

class Action : public QObject 
{ 
    Q_OBJECT 
    Q_PROPERTY(QString name READ name) 
public: 
    Action(): QObject(0) {} 
    QString name() const { return "rem"; } 
    Q_INVOKABLE void getData() {}; 
} 

i udostępnić go QML:

engine()->rootContext()->setContextProperty("action", new Action()); 

Jak przekazać do getData() metoda funkcji JavaScript jako parametr i wywołać tę funkcję po stronie C++?

Więc od QML punkt widzenia to powinno wyglądać tak:

action.getData(function(data) { alert(data); }); 

Odpowiedz

11

Jest to możliwe przy użyciu QJSValue. Na przykład:

//C++ 
Q_INVOKABLE void getData(QJSValue value) { 
    if (value.isCallable()) { 
     QJSValueList args; 
     args << QJSValue("Hello, world!"); 
     value.call(args); 
    } 
} 

//QML 
action.getData(function (data){console.log(data)}); 
Powiązane problemy