Qt Qtableview 自定义model继承QAbstractTableModel
时间: 2023-07-06 15:30:08 浏览: 147
在Qt中,QTableView是一种用于显示表格数据的控件,而QAbstractTableModel是QTableView使用的一种数据模型。如果想要在QTableView中展示自定义的数据,需要自定义一个继承自QAbstractTableModel的数据模型。
自定义QAbstractTableModel需要实现以下几个方法:
1. rowCount():返回数据模型中的行数。
2. columnCount():返回数据模型中的列数。
3. data():返回某一项的数据,可以用来在QTableView中展示数据。
4. setData():设置某一项的数据,可以用来在QTableView中编辑数据。
5. headerData():返回行或列的标签,可以用来在QTableView中显示表头。
6. flags():返回某一项的标志,用来指定该项是否可编辑、是否可选中等。
自定义QAbstractTableModel类后,可以将其与QTableView关联,通过setModel()方法来设置数据模型,使QTableView显示自定义的数据。
下面是一个简单的自定义QAbstractTableModel的例子:
```c++
class MyTableModel : public QAbstractTableModel
{
public:
MyTableModel(QObject *parent = nullptr);
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
Qt::ItemFlags flags(const QModelIndex &index) const override;
private:
QList<QList<QVariant>> m_data;
};
```
在这个例子中,自定义的数据模型类为MyTableModel,其中实现了rowCount()、columnCount()、data()、setData()、headerData()和flags()方法。m_data变量用于存储数据。自定义的数据模型类可以在需要使用表格数据的地方创建,并通过setModel()方法将其与QTableView关联起来。
阅读全文