2015-04-05 20 views
6

C++ dichiaro il mio oggetto in C++funzione Passo Java Script come parametro alla funzione

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

e renderlo disponibile per QML:

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

Come passare a getData() metodo funzione javascript come parametro e chiama questa funzione sul lato C++?

Quindi dal punto di vista QML dovrebbe assomiglia:

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

risposta

11

E 'possibile utilizzare QJSValue. Ad esempio:

//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)}); 
Problemi correlati