Qt入门教程【数据模型篇】 QAbstractTableModel抽象表格模型

QAbstractTableModel Class

类提供了一个抽象模型,可以对其进行子类化以创建表模型

公共功能

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

重新实现的公共功能

virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
virtual Qt::ItemFlags flags(const QModelIndex &index) const override
virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override
virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const override

详细说明

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

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

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

子类

在子类化 QAbstractTableModel 时,必须实现 rowCount()、columnCount() 和 data()。index() 和 parent() 函数的默认实现由 QAbstractTableModel 提供。行为良好的模型也将实现 headerData()。

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

为可调整大小的数据结构提供接口的模型可以提供 insertRows()、removeRows()、insertColumns() 和 removeColumns() 的实现。实现这些函数时,请务必调用相应的函数,以便所有连接的视图都能了解任何更改:

注意: 子类化模型的一些一般准则在模型子类化参考中提供。

另请参阅模型类QAbstractItemModelQAbstractListModelPixelator 示例

成员函数文档

  • QAbstractTableModel::QAbstractTableModel(QObject *parent = nullptr)

为给定父级构造抽象表模型。

  • [virtual]QAbstractTableModel::~QAbstractTableModel()

销毁抽象表模型。

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

Reimplements: QAbstractItemModel::flags(const QModelIndex &index) const.

  • [override virtual]`QModelIndexQAbstractTableModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const

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

返回具有父级中的数据索引。

另请参见 parent()。

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

猜你喜欢

转载自blog.csdn.net/hiwoshixiaoyu/article/details/125158183
今日推荐