GreyClusteringSampleTable.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #ifndef GREYCLUSTERINGSAMPLETABLE_H
  2. #define GREYCLUSTERINGSAMPLETABLE_H
  3. #include <QStandardItemModel>
  4. #include <QTableView>
  5. #include <QVector>
  6. #include <QSharedPointer>
  7. class CMind;
  8. struct GreyRange
  9. {
  10. QString name;
  11. bool leftClose; // 左闭合
  12. double leftValue;
  13. bool rightClose; // 右闭合
  14. double rightValue;
  15. };
  16. struct GreyClusteringValue
  17. {
  18. QString units; // 单位
  19. double weiget;
  20. QVector<GreyRange> greyRanges; // 灰类
  21. double leftExtension; // 延拓值左
  22. double rightExtension; // 延拓值右
  23. double oldValue; // 实现值改前
  24. double newValue; // 实现值改后
  25. };
  26. struct GreyClusteringItem
  27. {
  28. QString indexName; // 指标名字
  29. int row;
  30. int col;
  31. int rowSpan;
  32. int colSpan;
  33. QSharedPointer<GreyClusteringValue> value;
  34. };
  35. class GreyClusteringSampleTable : public QTableView
  36. {
  37. Q_OBJECT
  38. public:
  39. GreyClusteringSampleTable(CMind *mind, int grayNumber, QWidget *parent = nullptr);
  40. void refreshData();
  41. void compute();
  42. private:
  43. void init();
  44. void loadData();
  45. void loadSchemeData();
  46. void initClusteringItems();
  47. void refreshTableView();
  48. private slots:
  49. void itemChanged(QStandardItem *item);
  50. private:
  51. QVector<GreyClusteringItem> m_greyClusterings;
  52. QStandardItemModel *m_model;
  53. CMind *m_mind;
  54. int m_nodeDepth; // 节点深度
  55. int m_rowCount; // 行数
  56. QStringList m_grayNames;
  57. const int nodeDepth = 2; // 节点深度
  58. int m_grayNumber;
  59. bool m_isFillingData = false;
  60. bool m_tableHeaderInitialized = false;
  61. QMap<QString, QMap<QString, QString>> m_schemeData;
  62. };
  63. #endif // GREYCLUSTERINGSAMPLETABLE_H