examsmodel.cpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #include "examsmodel.h"
  2. #include "qjsonarray.h"
  3. #include "qjsonobject.h"
  4. ExamsTableModel::ExamsTableModel(QObject *parent)
  5. : QAbstractTableModel(parent)
  6. {}
  7. void ExamsTableModel::loadJsonData(const QJsonArray &jsonArray)
  8. {
  9. QList<Exams> studentList;
  10. for (const QJsonValue &value : jsonArray) {
  11. if (value.isObject()) {
  12. QJsonObject obj = value.toObject();
  13. Exams exams;
  14. exams.id = obj.value("id").toInt();
  15. exams.name = obj.value("name").toString();
  16. exams.fileDir = obj.value("fileDir").toString();
  17. exams.select = (obj.value("isSelect").toInt() != 0);
  18. studentList.append(exams);
  19. }
  20. }
  21. beginResetModel();
  22. examsList = studentList;
  23. endResetModel();
  24. }
  25. int ExamsTableModel::rowCount(const QModelIndex &parent) const
  26. {
  27. Q_UNUSED(parent);
  28. return examsList.size();
  29. }
  30. int ExamsTableModel::columnCount(const QModelIndex &parent) const
  31. {
  32. Q_UNUSED(parent);
  33. return 3;
  34. }
  35. QVariant ExamsTableModel::data(const QModelIndex &index, int role) const
  36. {
  37. if (!index.isValid())
  38. return QVariant();
  39. if (index.row() >= examsList.size() || index.row() < 0)
  40. return QVariant();
  41. if (role == Qt::DisplayRole) {
  42. const auto &exams = examsList.at(index.row());
  43. if (index.column() == 0)
  44. return exams.name;
  45. else if (index.column() == 1)
  46. return exams.fileDir;
  47. else if (index.column() == 2)
  48. return exams.select;
  49. }
  50. return QVariant();
  51. }
  52. QVariant ExamsTableModel::headerData(int section, Qt::Orientation orientation, int role) const
  53. {
  54. if (role != Qt::DisplayRole)
  55. return QVariant();
  56. if (orientation == Qt::Horizontal) {
  57. switch (section) {
  58. case 0:
  59. return tr("name");
  60. case 1:
  61. return tr("fileDir");
  62. case 2:
  63. return tr("select");
  64. default:
  65. return QVariant();
  66. }
  67. }
  68. return QVariant();
  69. }