#ifndef STUDENTMODEL_H #define STUDENTMODEL_H #include #include class StudentTableModel : public QAbstractTableModel { Q_OBJECT public: explicit StudentTableModel(QObject *parent = nullptr); enum columnRole { NAME, SWID, EXAMINEENUMBER, EXAMTEST, GROUPNUMBER, GROUP_NAME, MAXTIME, ANSWERTIME, ANSWERFILENAME, SCHOOL, STATE, COLUMNSIZE }; struct Student { qint64 id; QString name; // 姓名 QString swID; // SW_ID QString examineeNumber; // 考试编号 QString examTest; // 考试内容 QString checkinNumber; // 签到号 QString groupName; // 组别 int maxTime; // 最大完成时间 int answerTime; // 完成时间 QString answerFileName; // 完成时间 QString school; // 学校 QString state; // 在线状态 }; // 加载 JSON 数据 void loadJsonData(const QJsonArray &jsonArray); Student getCurrentStudent(const QModelIndex &index) const { if (index.isValid() && index.row() < students.size()) { return students.at(index.row()); } return Student(); // 如果索引无效或者超出范围,返回一个空的 Exams 结构 } protected: // 返回行数 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; // 设置表头 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; Qt::ItemFlags flags(const QModelIndex &index) const override; private: QList students; }; #endif // STUDENTMODEL_H