- 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
构造一个抽象列表模型。