examsmodel.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #ifndef EXAMSMODEL_H
  2. #define EXAMSMODEL_H
  3. #include <QAbstractTableModel >
  4. #include <QObject>
  5. class ExamsTableModel : public QAbstractTableModel
  6. {
  7. Q_OBJECT
  8. public:
  9. explicit ExamsTableModel(QObject *parent = nullptr);
  10. struct Exams
  11. {
  12. qint64 id;
  13. QString name;
  14. QString fileDir;
  15. bool select;
  16. };
  17. // 加载 JSON 数据
  18. void loadJsonData(const QJsonArray &jsonArray);
  19. Exams getCurrentExam(const QModelIndex &index) const
  20. {
  21. if (index.isValid() && index.row() < examsList.size()) {
  22. return examsList.at(index.row());
  23. }
  24. return Exams(); // 如果索引无效或者超出范围,返回一个空的 Exams 结构
  25. }
  26. protected:
  27. // 返回行数
  28. int rowCount(const QModelIndex &parent = QModelIndex()) const override;
  29. // 返回列数
  30. int columnCount(const QModelIndex &parent = QModelIndex()) const override;
  31. // 返回数据
  32. QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
  33. // 设置表头
  34. QVariant headerData(int section,
  35. Qt::Orientation orientation,
  36. int role = Qt::DisplayRole) const override;
  37. private:
  38. QList<Exams> examsList;
  39. };
  40. #endif // EXAMSMODEL_H