无法继承QAbstractItemModel

问题描述:

我是新来的模型/视图在PyQt中,我无法创建从Q​​AbstractItemModel类继承的对象。下面是从它继承的类:无法继承QAbstractItemModel

class MyCustomDataModel(QAbstractItemModel): 

    def __init(self, parent = None): 
     super(MyCustomDataModel, self).__init__(parent) 

     self.parent = parent 

下面是尝试实例上述类型的一个对象的另一个类:

class MyCustomType(AnotherCustomTypeThatInheritsQListWidgetItem): 

    def __init__(self, parent = None): 
     super(MyCustomType, self).__init__(parent) 

     # Instantiate a model: 
     self.dataModel = MyCustomDataModel(self) 

上述实例是在运行时投掷以下错误: “化QAbstractItemModel (QObject parent = None):参数1具有意外的类型'MyCustomType'“我看不出问题在这里,但我对Python/PyQt很新颖。有人能指出我做错了什么吗?我试过调用实例化行,并没有传入任何东西,但我得到了同样的错误。

+0

一些尝试似乎错误影响了,如果封装对象具有QListWidgetItem后继承链中的任何地方。不知道如何从这里开始。建议任何人? – LKeene

+1

为什么你会在自定义项目模型中使用'QListWidgetItem'?更重要的是,为什么你会为每一件物品创建一个新的物品模型?如果你是pyqt的新手,我建议你使用[QStandardItemModel](https://doc.qt.io/qt-4.8/qstandarditemmodel.html)。 – ekhumoro

+0

错误消息告诉你一些有关错误的信息。很明显,QAbstractItemModel的构造函数不喜欢你给它的东西。有时间查看文档以查看实际需要的内容。查看Qt类文档通常非常有帮助:http://doc.qt.io/qt-5/classes.html – Trilarion

这可能更适合作为评论而不是答案。

尝试更新,你通过MyCustomType实例MyCustomDataModel行:

self.dataModel = MyCustomDataModel(self) 

而是使用:

self.dataModel = MyCustomDataModel() 
+0

谢谢,这工作......至少,错误消失了。但我不明白我的错误。如果我希望在实例化过程中将父项分配给MyCustomDataModel,该怎么办? – LKeene

+0

将'MyCustomType'实例传递给'super(MyCustomDataModel,self).__ init __(parent)''中的'QAbstractItemModel'时出现错误。 'QAbstractItemModel'是一个不接受你创建的自定义对象的对象。如果你要继承'QAbstractItemModel',那么你需要构造'MyCustomType'作为可接受的对象(即继承'QAbstractItemModel'所期望的类)。我想这可能有助于理解你为什么要用'QAbstractItemModel'和'AnotherCustomTypeThatInheritsQListWidgetItem'来设置继承。 – HodgePodge

+0

这似乎是一个简单的事情,即创建一个从QAbstractItemModel继承的新类,并通过添加一个或两个成员属性来扩展它。如何预先知道将这个新类的对象放在从QListWidgetItem继承的另一个类中会破坏它的行为? – LKeene