2017-08-01 64 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>(); 
相关问题