PySide6.QtCore.QAbstractTableModel

class QAbstractTableModel

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

PySide6.QtCore.QAbstractTableModel 的继承图

继承自: QSqlQueryModel, QSqlTableModel, QSqlRelationalTableModel

概要

方法

注意

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

注意

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

线程安全

作为QObject的子类,QAbstractTableModel不是线程安全的。任何与QAbstractTableModel模型相关的API只能从模型对象所在的线程调用。如果QAbstractTableModel与视图连接,这意味着GUI线程,因为视图位于该线程中,并且它将从GUI线程调用模型。使用后台线程填充或修改模型的内容是可能的,但需要小心,因为后台线程不能直接调用任何与模型相关的API。相反,您应该将更新排队并在主线程中应用它们。这可以通过排队连接来完成。

__init__([parent=None])
Parameters:

父对象QObject

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