无法继承QAbstractItemModel
我是新来的模型/视图在PyQt中,我无法创建从QAbstractItemModel类继承的对象。下面是从它继承的类:无法继承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很新颖。有人能指出我做错了什么吗?我试过调用实例化行,并没有传入任何东西,但我得到了同样的错误。
这可能更适合作为评论而不是答案。
尝试更新,你通过MyCustomType实例MyCustomDataModel行:
self.dataModel = MyCustomDataModel(self)
而是使用:
self.dataModel = MyCustomDataModel()
谢谢,这工作......至少,错误消失了。但我不明白我的错误。如果我希望在实例化过程中将父项分配给MyCustomDataModel,该怎么办? – LKeene
将'MyCustomType'实例传递给'super(MyCustomDataModel,self).__ init __(parent)''中的'QAbstractItemModel'时出现错误。 'QAbstractItemModel'是一个不接受你创建的自定义对象的对象。如果你要继承'QAbstractItemModel',那么你需要构造'MyCustomType'作为可接受的对象(即继承'QAbstractItemModel'所期望的类)。我想这可能有助于理解你为什么要用'QAbstractItemModel'和'AnotherCustomTypeThatInheritsQListWidgetItem'来设置继承。 – HodgePodge
这似乎是一个简单的事情,即创建一个从QAbstractItemModel继承的新类,并通过添加一个或两个成员属性来扩展它。如何预先知道将这个新类的对象放在从QListWidgetItem继承的另一个类中会破坏它的行为? – LKeene
一些尝试似乎错误影响了,如果封装对象具有QListWidgetItem后继承链中的任何地方。不知道如何从这里开始。建议任何人? – LKeene
为什么你会在自定义项目模型中使用'QListWidgetItem'?更重要的是,为什么你会为每一件物品创建一个新的物品模型?如果你是pyqt的新手,我建议你使用[QStandardItemModel](https://doc.qt.io/qt-4.8/qstandarditemmodel.html)。 – ekhumoro
错误消息告诉你一些有关错误的信息。很明显,QAbstractItemModel的构造函数不喜欢你给它的东西。有时间查看文档以查看实际需要的内容。查看Qt类文档通常非常有帮助:http://doc.qt.io/qt-5/classes.html – Trilarion