class QAbstractTableModel#

QAbstractTableModel 类提供了一个抽象模型,可以继承以创建表格模型。 更多...

Inheritance diagram of PySide6.QtCore.QAbstractTableModel

继承自: QSqlQueryModelQSqlTableModelQSqlRelationalTableModel

概述#

方法#

注意

此文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译有问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建票据来让我们知道

详细描述#

QAbstractTableModel 提供了一个标准接口,用于表示数据为二维数组项的模型。它不能直接使用,但必须进行子类化。

由于该模型提供的接口比 QAbstractItemModel 更加专用,因此它不适用于与树视图一起使用,尽管它可以用来向 QListView 提供数据。如果您需要表示一项简单的项目列表,并且只需要一个包含单一数据列的模型,那么子类化 QAbstractListModel 可能更合适。

rowCount()columnCount() 函数返回表格的维度。要获取与模型中的某个项目对应的模型索引,请使用 index() 并仅提供行和列号。

子类化

当子类化 QAbstractTableModel 时,您必须实现 rowCount()columnCount() ,和 data()QAbstractTableModel 提供了 index()parent() 函数的默认实现。行为良好的模型还会实现 headerData()

可编辑的模型需要实现 setData() ,并且实现 flags() 以返回包含 ItemIsEditable 的值。

提供可调整大小数据结构接口的模型可以提供 insertRows()removeRows()insertColumns()removeColumns() 的实现。在实现这些函数时,必须调用适当的函数,以便所有连接的视图都能意识到任何变化。

注意

Model Subclassing Reference 中提供了关于对模型进行子类化的一般指南。

线程安全

作为QObject的子类,QAbstractTableModel并非线程安全的。任何有关QAbstractTableModel模型的API调用都应该只在该模型对象存在的线程中进行。如果QAbstractTableModel与视图连接,即GUI线程(视图所在的位置),它将从GUI线程调用模型。使用后台线程填充或修改模型的内容是可能的,但需要小心,因为后台线程不能直接调用任何与模型相关的API。相反,您应该在主线程中排队更新并应用它们。这可以通过排队连接实现。

__init__([parent=None])#
参数:

parentQObject

为给定parent构建一个抽象表模型。