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)
由于使用了模板,解决方案对您来说可能更复杂,但希望这可以指出您正确的方向.