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

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

QAbstractTableModel Class

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

公共功能
QAbstractTableModel(QObject *parent = nullptr)
virtual~QAbstractTableModel()
重新实现的公共功能
virtual booldropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
virtual Qt::ItemFlagsflags(const QModelIndex &index) const override
virtual QModelIndexindex(int row, int column, const QModelIndex &parent = QModelIndex()) const override
virtual QModelIndexsibling(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() 的实现。实现这些函数时,请务必调用相应的函数,以便所有连接的视图都能了解任何更改:

  • insertRows() 实现必须在将新行插入数据结构之前调用 beginInsertRows(),并且必须立即调用 endInsertRows()。
  • insertColumns() 实现必须在将新列插入数据结构之前调用 beginInsertColumns(),并且必须紧接着调用 endInsertColumns()。
  • 在从数据结构中删除行之前,removeRows() 实现必须调用 beginRemoveRows(),并且它必须立即调用 endRemoveRows()。
  • 在从数据结构中删除列之前,removeColumns() 实现必须调用 beginRemoveColumns(),并且必须紧接着调用 endRemoveColumns()。

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

另请参阅模型类、QAbstractItemModel、QAbstractListModel 和 Pixelator 示例。

成员函数文档
  • QAbstractTableModel::QAbstractTableModel(QObject *parent = nullptr)

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

  • [virtual]QAbstractTableModel::~QAbstractTableModel()

销毁抽象表模型。

  • [override virtual]bool QAbstractTableModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)

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

  • [override virtual]Qt::ItemFlagsQAbstractTableModel::flags(const QModelIndex &index) const

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()。

  • QModelIndexQAbstractTableModel::sibling(int row, int column, const QModelIndex &idx) const

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1325098.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-12
下一篇2022-06-12

发表评论

登录后才能评论

评论列表(0条)

    保存