Qt不允许注册类模板?
我的班级层次结构是
TreeItemTemplateBackend : public QObject template<typename T> TreeItem : public TreeItemTemplateBackend
qmlRegisterType<InspectorItem>("ge.gui",1,"InspectorItem"); qmlRegisterType<TreeItemTemplateBackend>("ge.gui","TreeItemTemplateBackend"); qmlRegisterType<TreeItem<InspectorItem>>("ge.gui","TreeItem");
我仍然收到此错误:
QMetaProperty :: read:无法处理未注册的数据类型TreeItem< InspectorItem> *属性’Inspector :: root’
Inspector :: root是:
Q_PROPERTY(TreeItem<InspectorItem> * root READ root NOTIFY rootChanged)
解决方法
当你想使用一个指向例如在Q_PROPERTY中的’ClassA’,你必须像这样注册:
qRegisterMetaType<ClassA*>("ClassA*");
由于使用了模板,解决方案对您来说可能更复杂,但希望这可以指出您正确的方向.
(与我的other answer. source: ‘jpn’相同)