简体   繁体   English

如何在QML中调用从C ++创建的对象的方法?

[英]How invoke method of the object created from C++ in QML?

I need dynamically run JavaScript to operate some C++ object from the simulation. 我需要动态运行JavaScript才能从模拟操作一些C ++对象。

Example: 例:

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

First, i have a CppToQML class which is registed into QML. 首先,我有一个注册到QML中的CppToQML类。

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

The CppClass is created in C++ side and stored in CppToQML mList CppClass在C ++端创建,并存储在CppToQML mList

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

I am trying to do this in QML javascript: 我正在尝试在QML javascript中执行此操作:

CppToQML {
    id: cppToQML
}

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

Problem is QML can not recognize CppClass pointer as a data type. 问题是QML无法将CppClass指针识别为数据类型。

For QML to recognize the class you must register it: 为了使QML能够识别该类,您必须注册它:

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

or: 要么:

qmlRegisterType<CppClass>();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM