QAbstractTableModel 类

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

头文件 #include <QAbstractTableModel>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core
继承自 QAbstractItemModel
被以下类继承

QSqlQueryModel

公共函数

QAbstractTableModel(QObject *parent = nullptr)
~QAbstractTableModel()

重新实现的公共函数

虚 booldropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
虚 Qt::ItemFlagsflags(const QModelIndex &index) const override
虚 QModelIndexindex(int row, int column, const QModelIndex &parent = QModelIndex()) const override
虚 QModelIndexsibling(int row, int column, const QModelIndex &idx) const override

详细描述

QAbstractTableModel 为将数据表示为二维元素数组的模型提供了一种标准接口。它不直接使用,但必须被子类化。

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

函数rowCount() 和 columnCount() 返回表的维度。要检索对应于模型中项目的模型索引,请使用 index(),并只提供行和列号。

子类化

在子类化 QAbstractTableModel 时,您必须实现 rowCount()、columnCount() 和 dataindex() 和 parent() 函数。表现良好的模型还会实现 headerData().

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

提供对可调整大小的数据结构接口的模型可以提供 insertRows()、removeRows()、insertColumns() 和 removeColumns() 的实现。实现这些函数时,调用适当的函数非常重要,以确保所有已连接的视图都能意识到任何更改。

注意:有关模型子类化的某些一般性指南可在 Model Subclassing Reference 中找到。

线程安全

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

另见 模型类QAbstractItemModelQAbstractListModel

成员函数文档

[显式] QAbstractTableModel::QAbstractTableModel(QObject *parent = nullptr)

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

[虚拟 noexcept] QAbstractTableModel::~QAbstractTableModel()

销毁抽象表模型。

[覆写虚拟] bool QAbstractTableModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)

重新实现了: QAbstractItemModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent).

[覆写虚拟] Qt::ItemFlags QAbstractTableModel::flags(const QModelIndex &index) const

重新实现了: QAbstractItemModel::flags(const QModelIndex &index) const.

[覆写虚拟] QModelIndex QAbstractTableModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const

重新实现了: QAbstractItemModel::index(int row, int column, const QModelIndex &parent) const.

返回 rowcolumn 中数据索引的 parent

另请参见 parent().

[覆写虚拟] QModelIndex QAbstractTableModel::sibling(int row, int column, const QModelIndex &idx) const

重新实现了: QAbstractItemModel::sibling(int row, int column, const QModelIndex &index) const.

© 2024 Qt公司有限公司。本文件包含的文档贡献归其各自的拥有者所有。提供的文档受免费软件基金会发布的GNU自由文档许可证版本1.3的条款约束。Qt及其相关标志是Qt公司有限公司在芬兰以及其他国家和地区的商标