正在获取指向已注册QML类型的指针
Getting pointer to registered QML type
如果我有类型注册的
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"实例了。如果需要,您可以将它传递给代码库的其他部分。
相关文章:
- QtQuick - qml:28:错误:未知方法返回类型:自定义类型
- 即使直接从官方示例中复制,也找不到未知类型名称QML_ELEMENT和 QML 模块
- 如何将不同的变量传递给相同类型的 QML
- qml 未知方法返回类型:ArchiveFile*,即使调用了 qmlRegisterUncreatableType
- 如何使用 c++ 模型填充播放列表 qml 类型
- QML自定义列表数据类型
- 如何使用QMLRegisterType在QML中指定C 类型
- 如何将c 返回值列表或其他复杂类型的QML列表
- 运行 QML 时出现"未知方法参数类型"错误
- 将QML数组和MAP/对象类型与C 区分开
- 如何制作自定义C 类QML类型
- 了解向 QML 公开C++类型的属性
- 使用更新功能扩展QML图像类型
- QML/real和C++/float之间的Qt类型错误
- 将抽象类型公开为QML的Q_PROPERTY
- 枚举类型作为QML的C++类中的属性类型
- 是否可以从对象而不是类注册 QML 类型
- 来自C++插件信令的 QML 类型仅发出一次
- 正在获取指向已注册QML类型的指针
- QML类型绘制与QPainter