Qt入门教程数据模型篇 QAbstractTableModel抽象表格模型
Posted 编程小鱼酱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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() 的实现。实现这些函数时,请务必调用相应的函数,以便所有连接的视图都能了解任何更改:
- 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.
以上是关于Qt入门教程数据模型篇 QAbstractTableModel抽象表格模型的主要内容,如果未能解决你的问题,请参考以下文章
Qt入门教程数据模型篇 QAbstractTableModel抽象表格模型
Qt入门教程数据模型篇 QAbstractListModel 抽象List模型
Qt入门教程数据模型篇 QAbstractListModel 抽象List模型
Qt入门教程数据模型篇QAbstractItemModel抽象模型基类