2017-08-01 72 views
0

我需要動態運行JavaScript來從模擬操作一些C++對象。如何在QML中調用由C++創建的對象的方法?

實施例:

class CppToQML : public QObject{ 
    Q_INVOKABLE CppClass* getObj(int i); 
    QList<CppClass*> mList; 
} 

首先,我有一個CppToQML類被臨時用戶到QML。

qmlRegisterType<CppToQML>("CppToQML", 1, 0, "CppToQML");

CppClass在C++側創建並存儲在CppToQML mList

class CppClass : public QObject { 
    Q_INVOKABLE void sayHello(); 
} 

我試圖做到這一點在QML的javascript:

CppToQML { 
    id: cppToQML 
} 

//javascript 
cppToQML.getObj(0).sayHello(); 

問題是QML無法識別CppClass指針作爲數據類型。

回答

0

對於QML識別類,你必須註冊:

qmlRegisterType<CppClass>("CppToQML", 1, 0, "CppClass"); 

或:

qmlRegisterType<CppClass>(); 
相關問題