PySide6.QtCore.QAbstractListModel¶
- class QAbstractListModel¶
QAbstractListModel
类提供了一个抽象模型,可以被子类化以创建一维列表模型。更多…继承自:
QWebEngineHistoryModel
,QPdfSearchModel
,QPdfLinkModel
,QStringListModel
,QHelpIndexModel
概要¶
方法¶
def
__init__()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
QAbstractListModel
为模型提供了一个标准接口,这些模型将其数据表示为简单的非分层项目序列。它不直接使用,但必须被子类化。由于该模型提供了比
QAbstractItemModel
更专门的接口,因此不适合与树视图一起使用;如果您想为此目的提供模型,则需要子类化QAbstractItemModel
。如果您需要使用多个列表模型来管理数据,可能更适合子类化QAbstractTableModel
。可以通过继承这个类并实现所需的最少数量的函数来创建简单的模型。例如,我们可以实现一个基于
QStringList
的简单只读模型,该模型向QListView小部件提供字符串列表。在这种情况下,我们只需要实现rowCount()
函数来返回列表中的项目数量,以及data()
函数来从列表中检索项目。由于模型代表一维结构,
rowCount()
函数返回模型中项目的总数。columnCount()
函数是为了与各种视图的互操作性而实现的,但默认情况下会通知视图模型只包含一列。子类化¶
当子类化
QAbstractListModel
时,你必须提供rowCount()
和data()
函数的实现。行为良好的模型还会提供headerData()
的实现。如果你的模型在QML中使用,并且需要除了
roleNames()
函数提供的默认角色之外的其他角色,你必须重写它。对于可编辑的列表模型,您还必须提供
setData()
的实现,并实现flags()
函数,使其返回包含ItemIsEditable
的值。请注意,
QAbstractListModel
提供了columnCount()
的默认实现,该实现通知视图此模型中只有一列项目。提供可调整大小的类似列表数据结构的接口的模型可以实现
insertRows()
和removeRows()
。在实现这些函数时,重要的是调用适当的函数,以便所有连接的视图都能意识到任何更改:一个
insertRows()
实现必须在向数据结构中插入新行之前调用beginInsertRows()
,并且必须在此之后立即调用endInsertRows()
。一个
removeRows()
实现必须在从数据结构中移除行之前调用beginRemoveRows()
,并且必须在移除后立即调用endRemoveRows()
。
使用给定的
parent
构造一个抽象列表模型。