如果我注册了类型
qmlRegisterType<MyClass>("com.sample.myclass", 1, 0, "myClass");
我想获得指向已注册类型的指针,即
MyClass* registeredClass = **getQmlRegisteredType<MyClass>(1, 0)**;
有可能吗?我想要它的原因是因为我想在特定时间设置同一对象的一些属性,以便当 qml 查看它时,它知道。另一个原因是我想设置上下文属性,这样我就不必这样做了:
MyClass {
id: cls
}
....
cls.someMethod
我会做的
((QQmlContext*)viewer.rootContext())->setContextProperty("cls",
(QObject*)pointerToMyClass); // Pardon my C style cast
谢谢
最佳答案
我个人不会在 QML 目录中声明类。我会通过上下文属性系统从 C++ 公开一个对象实例,然后您也可以在 C++ 端访问该对象,无论您想用它做什么。
如果我是你,我会写一些伪代码:
MyClass myClass;
QQmlContext *ctxt = view->rootContext();
ctxt->setContextProperty("myClass", &myClass);
请注意,您所做的所有转换都是不必要的。完成此操作后,您可以访问“myClass”实例。如果需要,您可以将其传递给代码库的其他部分。
关于c++ - 获取指向已注册 QML 类型的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23032808/