PySide6.QtCore.QAbstractListModel

class QAbstractListModel

QAbstractListModel 类提供了一个抽象模型,可以被子类化以创建一维列表模型。更多

PySide6.QtCore.QAbstractListModel 的继承图

继承自: QWebEngineHistoryModel, QPdfSearchModel, QPdfLinkModel, QStringListModel, QHelpIndexModel

概要

方法

注意

本文档可能包含从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()。在实现这些函数时,重要的是调用适当的函数,以便所有连接的视图都能意识到任何更改:

注意

有关子类化模型的一些一般指南可在模型子类化参考中找到。

另请参阅

QAbstractTableModel

__init__([parent=None])
Parameters:

父对象QObject

使用给定的parent构造一个抽象列表模型。