【发布时间】:2018-01-31 09:13:43
【问题描述】:
我是 PyQt 中的模型/视图的新手,在创建从 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 还是很陌生。有人可以指出我做错了什么吗?我试过调用实例化行并且没有传递任何东西,但我得到了同样的错误。
【问题讨论】:
-
经过一些试验,如果封装对象在其继承链中的任何位置都有一个 QListWidgetItem ,似乎就会出现错误。不知道如何从这里开始。建议任何人?
-
你为什么要将
QListWidgetItem与自定义项目模型一起使用?更重要的是,你为什么要为每一个项目创建一个新的项目模型?如果您是 pyqt 新手,我建议您使用 QStandardItemModel。 -
错误信息告诉你一些问题。显然 QAbstractItemModel 的构造函数不喜欢你给它的东西。是时候查看文档以了解它真正想要的内容了。查找 Qt 类文档通常很有帮助:doc.qt.io/qt-5/classes.html
-
@ekhumoro:我从 QListView 开始,但无法让拖放功能正常工作。我求助于将 QListWidget 和 QListWidgetItem(s) 与自定义模型一起使用,因为拖放按我需要的方式工作。我为每个 QListWidgetItem 对象使用一个模型,因为这些对象与填充小部件网格的复杂项目特定的多字段数据相关联。
-
@Trilarion:感谢您提供的有用链接。我已经为它添加了书签。