一般的,QSqlTableModel可以关联数据库的一张表,QTableView对象通过setModel,关联这个model对象,这样,编码上很方便能将QTableView展示成数据库表的样式。
但是如果数据来源不是数据库表,而是json数组,则需要继承QAbstractTableModel,然后再让tableview->setModel。
下文的AbsTblMdlJsonArray就简易地实现了这个功能。
#pragma once
#include <memory>
#include <QAbstractTableModel>
#include <QJsonArray>
class AbsTblMdlJsonArray : public QAbstractTableModel {
public:
AbsTblMdlJsonArray(const QJsonArray &src, QObject *parent = Q_NULLPTR);
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
//QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override;
//QModelIndex parent(const QModelIndex &index) const override;
int rowCount(const QModelIndex &parent = QModelIndex()) const