模型视图(06):【类】QAbstractTableModel[官翻]

QAbstractTableModel 类

QAbstractTableModel类提供了一个抽象模型,可以通过子类化创建表模型。

Header:#include < QAbstractTableModel >
qmake:QT += core
Inherits:QAbstractItemModel
Inherited By:QSqlQueryModel,

详述

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

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

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

子类化

在子类化QAbstractTableModel时,必须实现rowCount()、columnCount()和data()。索引()和父()函数的默认实现是由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示例

公共函数

  1. QAbstractTableModel(QObject *parent = nullptr)
  2. virtual ~QAbstractTableModel()

重写的公共函数

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

总结

如果自定义表格模型,那么继承这个类。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值