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

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

本文关键字:创建 C++ 对象 方法 QML 何调用 调用      更新时间:2023-10-16

我需要动态运行JavaScript来操作模拟中的一些C++对象。

例:

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

首先,我有一个注册到 QML 中的CppToQML类。

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数据类型。

要使QML识别该类,您必须注册它:

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

或:

qmlRegisterType<CppClass>();