EvalSchemeWidget.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #ifndef EVALSCHEMEWIDGET_H
  2. #define EVALSCHEMEWIDGET_H
  3. #include "EvalWidget.h"
  4. #include <QMap>
  5. class CSchemeView;
  6. class PushButton;
  7. class RoundMenu;
  8. class CheckBox;
  9. class QHBoxLayout;
  10. class QAction;
  11. /**
  12. * @brief The EvalSchemeWidget class
  13. * 评估方案
  14. */
  15. class EvalSchemeWidget : public EvalWidget
  16. {
  17. Q_OBJECT
  18. public:
  19. enum Scheme
  20. {
  21. Index = 0b1 << 1,
  22. Collect = 0b1 << 2,
  23. Process = 0b1 << 3,
  24. Output = 0b1 << 4,
  25. };
  26. Q_ENUM(Scheme)
  27. static QString nameOfScheme(Scheme s);
  28. enum Algorithm
  29. {
  30. Alg1 = Process | 0b1 << 11,
  31. Alg2 = Process | 0b1 << 12,
  32. Alg3 = Process | 0b1 << 13,
  33. Alg4 = Process | 0b1 << 14,
  34. Alg5 = Process | 0b1 << 15,
  35. };
  36. Q_ENUM(Algorithm)
  37. struct SchemeAndAlg
  38. {
  39. int scheme;
  40. Algorithm alg;
  41. };
  42. static QString nameOfAlgorithm(Algorithm a);
  43. explicit EvalSchemeWidget(ProjectInfo *proj, int type, QWidget *parent);
  44. void initWidgets();
  45. void initLayout();
  46. void connectSignalsAndSlots();
  47. void refreshSchemeView();
  48. void loadScheme(const QString scheme);
  49. void updateButtonState();
  50. signals:
  51. private slots:
  52. void slotShowSchemeMenu();
  53. void slotIndexClicked();
  54. void slotDataClicked();
  55. void slotAlgBtnClicked();
  56. void slotClearClicked();
  57. void slotSelectAlgorithm(Algorithm alg);
  58. private:
  59. PushButton *m_schemeBtn = nullptr; // 弹出模板菜单
  60. CheckBox *m_index = nullptr; // 选择是否使用指标体系
  61. CheckBox *m_data = nullptr; // 选择是否收集专家数据
  62. PushButton *m_algBtn = nullptr; // 弹出算法菜单
  63. PushButton *m_clear = nullptr; // 清空方案
  64. RoundMenu *m_schemeMenu = nullptr; // 方案模板菜单
  65. RoundMenu *m_algMenu = nullptr; // 算法菜单
  66. CSchemeView *m_schemeView = nullptr;
  67. QWidget *m_schemeSep = nullptr; // 方案视图和方案说明间的分割线
  68. QLabel *m_description = nullptr;
  69. QHBoxLayout *m_buttonLayout = nullptr;
  70. QHBoxLayout *m_schemeLayout = nullptr;
  71. int m_scheme = 0;
  72. QList<Algorithm> m_algs;
  73. QMap<QString, SchemeAndAlg> m_schemes;
  74. };
  75. #endif // EVALSCHEMEWIDGET_H