MatrixPanelWidget.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #ifndef MATRIXPANELWIDGET_H
  2. #define MATRIXPANELWIDGET_H
  3. #include <QWidget>
  4. #include "mindmapwidget.h"
  5. #include "dbService/ClassSet.h"
  6. namespace Ui {
  7. class MatrixPanelWidget;
  8. }
  9. struct ProfessorInfo
  10. {
  11. int id = -1;
  12. QString name;
  13. QString job;
  14. QString major;
  15. QString department;
  16. QString education;
  17. QString phone;
  18. QDateTime createDataTime;
  19. QString remark;
  20. QString tableMsg;
  21. EngineerInfo engineer; //当前的工程
  22. };
  23. class MindNodeManager
  24. {
  25. public:
  26. struct NodeMessage
  27. {
  28. QString node;
  29. QString name;
  30. QString remark;
  31. };
  32. explicit MindNodeManager() { }
  33. void pushNewMind(NodeMessage node) { mindNodes << node; }
  34. QList<NodeMessage> getMindNodes() const { return mindNodes; }
  35. void clear() { mindNodes.clear(); };
  36. QString getMindName() const { return mindName; }
  37. void setMindName(QString name) { mindName = name; }
  38. private:
  39. QString mindName;
  40. QList<NodeMessage> mindNodes;
  41. };
  42. class MatrixPanelWidget : public QWidget
  43. {
  44. Q_OBJECT
  45. public:
  46. explicit MatrixPanelWidget(QWidget *parent = nullptr);
  47. explicit MatrixPanelWidget(QWidget *parent, ProfessorInfo professor);
  48. void setTableMsg(QString tableMsg);
  49. ~MatrixPanelWidget();
  50. /**
  51. * @brief 绘制脑图
  52. * @param 横坐标参考脑图节点
  53. * @param 纵坐标参考脑图节点
  54. */
  55. void init(const QStringList indexsRef, const QStringList indexs);
  56. void initImportData(const QStringList indexsRef, const QStringList indexs,
  57. QList<NodeMatrixInfo *> nodeValueInfoList);
  58. void saveNodes();
  59. private slots:
  60. void on_prePageBtn_clicked();
  61. void on_nextPageBtn_clicked();
  62. void on_saveBtn_clicked();
  63. void oneTableDataReady(bool status);
  64. void oneTechMeasureTableDataReady(bool status);
  65. void oneTableDataSave();
  66. void getTableModel(QStandardItemModel *item);
  67. void getTableModelName(QString itemName);
  68. void on_importBtn_clicked();
  69. public slots:
  70. void on_exportBtn_clicked();
  71. private:
  72. Ui::MatrixPanelWidget *ui;
  73. ProfessorInfo m_professor;
  74. QGridLayout *firstLayout = nullptr;
  75. QWidget *firstPlainWidget = nullptr;
  76. QGridLayout *secondLayout = nullptr;
  77. QWidget *secondPlainWidget = nullptr;
  78. MindNodeManager *currentMindNodes = nullptr;
  79. QList<QList<MindNodeManager::NodeMessage>> *classifiedNodes = nullptr;
  80. QList<QList<MindNodeManager::NodeMessage>> *indexsRefClassifiedNodes = nullptr; //是否参考指标体系
  81. QList<MindNodeManager::NodeMessage> technicalCols;
  82. int currentPage = 0;
  83. bool isAutoSave = false;
  84. QString currentTab = "";
  85. QString m_table_msg;
  86. QList<QTabWidget *> tabWidgets;
  87. QList<QStandardItemModel *> modelList; //存储专家tab数据
  88. QList<QString> modelName; //存储专家tab名称
  89. void sortMindNodes(const MindNodeManager &manager, QList<QList<MindNodeManager::NodeMessage>> *classify);
  90. void getMindNodes(MindNodeManager *manager, QStringList listNodes);
  91. QStringList getFirstIndexNodes(const MindNodeManager &manager);
  92. QStringList getLastIndexNodes(const MindNodeManager &manager);
  93. int getPages();
  94. void setPage(int page);
  95. void initPlainWidget(QList<NodeMatrixInfo *> nodeValueInfoList);
  96. void initPlainTechMeasuresWidget(QList<NodeMatrixInfo *> nodeValueInfoList);
  97. void paintPlainWidget();
  98. bool checkTableDateReady();
  99. signals:
  100. void importData(QList<NodeMatrixInfo *> nodeValueInfoList);
  101. };
  102. #endif // MATRIXPANELWIDGET_H