| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #ifndef STUDENTMODEL_H
- #define STUDENTMODEL_H
- #include <QAbstractTableModel>
- #include <QObject>
- 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<Student> students;
- };
- #endif // STUDENTMODEL_H
|