QAbstractTableModel类提供一个抽象的模型,可以被子类化来创建表格模型。它继承自QAbstractItemModel。
QAbstractTableModel类提供了一个抽象接口,在该类中数据被表示为一个二维的阵列。这个类不能直接使用,要子类化它。
子类化QAbstractTableModel类
子类化QAbstractTableModel类时,必须要实现这3个函数:rowCount(),columnCount()和data()。index()和parent()函数由QAbstractTableModel类默认实现了。表现良好的模型还应该实现headerData()。
可编辑的模型还应实现setData(),还要实现flags()函数,来返回一个包含Qt::ItemIsEditable的值。
本模型还提供了接口可以改变数据大小,有以下函数的实现:insertRows(),removeRows(),insertColumns()和removeColumns()。在实现这些函数时,在必要时调用合适的函数,才能让与本模型相连接的视图知道数据发生了哪些变化。
1、insertRows()的实现。在向数据结构里插入新行时,必须先调用beginInsertRows()函数,之后必须立即调用endInsertRows()函数。
2、insertColumns()的实现。在向数据结构里插入新列时,必须先调用beginInsertColumns()函数,之后必须立即调用endInsertColumns()函数。
3、removeRows()的实现。在从数据结构里删除行时,必须先调用beginRemoveRows()函数,之后必须立即调用en