#include "examsmodel.h" #include "qjsonarray.h" #include "qjsonobject.h" ExamsTableModel::ExamsTableModel(QObject *parent) : QAbstractTableModel(parent) {} void ExamsTableModel::loadJsonData(const QJsonArray &jsonArray) { QList studentList; for (const QJsonValue &value : jsonArray) { if (value.isObject()) { QJsonObject obj = value.toObject(); Exams exams; exams.id = obj.value("id").toInt(); exams.name = obj.value("name").toString(); exams.fileDir = obj.value("fileDir").toString(); exams.select = (obj.value("isSelect").toInt() != 0); studentList.append(exams); } } beginResetModel(); examsList = studentList; endResetModel(); } int ExamsTableModel::rowCount(const QModelIndex &parent) const { Q_UNUSED(parent); return examsList.size(); } int ExamsTableModel::columnCount(const QModelIndex &parent) const { Q_UNUSED(parent); return 3; } QVariant ExamsTableModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); if (index.row() >= examsList.size() || index.row() < 0) return QVariant(); if (role == Qt::DisplayRole) { const auto &exams = examsList.at(index.row()); if (index.column() == 0) return exams.name; else if (index.column() == 1) return exams.fileDir; else if (index.column() == 2) return exams.select; } return QVariant(); } QVariant ExamsTableModel::headerData(int section, Qt::Orientation orientation, int role) const { if (role != Qt::DisplayRole) return QVariant(); if (orientation == Qt::Horizontal) { switch (section) { case 0: return tr("name"); case 1: return tr("fileDir"); case 2: return tr("select"); default: return QVariant(); } } return QVariant(); }