QMetaProperty :: read:无法处理未注册的数据类型'TreeItem <InspectorItem>*'

Kra*_*rab 6 c++ qt qml

Qt不允许注册类模板?

我的班级层次结构是

TreeItemTemplateBackend : public QObject

template<typename T>
TreeItem : public TreeItemTemplateBackend
Run Code Online (Sandbox Code Playgroud)

这是我在qml注册的内容:

qmlRegisterType<InspectorItem>("ge.gui", 1, 0, "InspectorItem");
qmlRegisterType<TreeItemTemplateBackend>("ge.gui", 1, 0, "TreeItemTemplateBackend");
qmlRegisterType<TreeItem<InspectorItem>>("ge.gui", 1, 0, "TreeItem");
Run Code Online (Sandbox Code Playgroud)

我仍然收到此错误:

QMetaProperty :: read:无法处理TreeItem<InspectorItem>*属性'Inspector :: root'的未注册数据类型

Inspector :: root是:

Q_PROPERTY(TreeItem<InspectorItem> * root READ root NOTIFY rootChanged)
Run Code Online (Sandbox Code Playgroud)

Ara*_*lox 15

当你想在Q_PROPERTY中使用指向例如'ClassA'的指针时,你必须像这样注册它:

qRegisterMetaType<ClassA*>("ClassA*");
Run Code Online (Sandbox Code Playgroud)

由于使用了模板,解决方案对您来说可能更复杂,但希望这可以指出您正确的方向.

(和我的其他答案一样.来源:'jpn')