QMetaProperty::read: 无法处理未注册的数据类型'TreeItem<InspectorItem>*'
Qt 不允许注册类模板?
Qt doesn't allow to register class template?
我的班级层次结构是
TreeItemTemplateBackend : public QObject
template<typename T>
TreeItem : public TreeItemTemplateBackend
这是我在qml中注册的:
This is what i registred in qml:
qmlRegisterType<InspectorItem>("ge.gui", 1, 0, "InspectorItem");
qmlRegisterType<TreeItemTemplateBackend>("ge.gui", 1, 0, "TreeItemTemplateBackend");
qmlRegisterType<TreeItem<InspectorItem>>("ge.gui", 1, 0, "TreeItem");
我仍然收到此错误:
QMetaProperty::read:无法处理属性Inspector::root"的未注册数据类型TreeItem
Inspector::root 是:
Inspector::root is:
Q_PROPERTY(TreeItem<InspectorItem> * root READ root NOTIFY rootChanged)
推荐答案
当你想使用一个指向例如的指针时Q_PROPERTY 中的ClassA",您必须像这样注册它:
when you want to use a pointer to e.g. 'ClassA' in a Q_PROPERTY, you have to register it like this:
qRegisterMetaType<ClassA*>("ClassA*");
由于使用了模板,解决方案可能对您来说更复杂,但希望这会为您指明正确的方向.
The solution might be more complex for you due to the use of templates, but hopefully this points you in the right direction.
(与我的其他答案相同.来源:'jpn')
相关文章