ConfigExpertDataWidget.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. #ifndef CONFIGEXPERTDATAWIDGET_H
  2. #define CONFIGEXPERTDATAWIDGET_H
  3. #include <QWidget>
  4. #include "SchemePlanManager.h"
  5. class QFUser;
  6. class UserConfig;
  7. class ToolButton;
  8. class PushButton;
  9. class QVBoxLayout;
  10. class QHBoxLayout;
  11. class QGridLayout;
  12. class QLabel;
  13. class QSplitter;
  14. class QPushButton;
  15. class QListWidget;
  16. class QSpinBox;
  17. /**
  18. * @brief The ConfigListItemWidget class
  19. * 自定义专家配置列表条目
  20. */
  21. class ConfigListItemWidget : public QWidget
  22. {
  23. Q_OBJECT
  24. public:
  25. explicit ConfigListItemWidget(QWidget *parent = nullptr);
  26. UserConfig *userConfig() const;
  27. void setUserConfig(UserConfig *config);
  28. signals:
  29. void sigImport(UserConfig *config);
  30. void sigRemove(UserConfig *config);
  31. private:
  32. void initWidget();
  33. void initLayouts();
  34. void connectSignalsAndSlots();
  35. private slots:
  36. void slotImport();
  37. void slotRemove();
  38. private:
  39. UserConfig *m_config = nullptr;
  40. QLabel *m_name = nullptr;
  41. QSpinBox *m_weight = nullptr;
  42. QPushButton *m_import = nullptr;
  43. QPushButton *m_remove = nullptr;
  44. QHBoxLayout *m_layout = nullptr;
  45. };
  46. /**
  47. * @brief The ExpertListItemWidget class
  48. * 自定义专家列表条目
  49. */
  50. class ExpertListItemWidget : public QWidget
  51. {
  52. Q_OBJECT
  53. public:
  54. explicit ExpertListItemWidget(QWidget *parent = nullptr);
  55. QFUser *user() const;
  56. void setUser(QFUser *user);
  57. void setIndex(int index);
  58. signals:
  59. void sigAddUser(QFUser *user);
  60. private:
  61. void initWidget();
  62. void initLayout();
  63. void connectSignalsAndSlots();
  64. private:
  65. void slotAdd();
  66. private:
  67. QFUser *m_user = nullptr;
  68. QLabel *m_index = nullptr;
  69. QLabel *m_name = nullptr;
  70. QPushButton *m_add = nullptr;
  71. QHBoxLayout *m_layout = nullptr;
  72. };
  73. /**
  74. * @brief The ConfigExpertDataWidget class
  75. * 专家配置和导入专家数据视图
  76. */
  77. class ConfigExpertDataWidget : public QWidget
  78. {
  79. Q_OBJECT
  80. public:
  81. explicit ConfigExpertDataWidget(QWidget *parent = nullptr);
  82. void initialize();
  83. void initLayout();
  84. void connectSignalsAndSlots();
  85. void setProcess(SchemePlanManager::SchemeProcessInfo process);
  86. void loadData();
  87. signals:
  88. protected:
  89. virtual void showEvent(QShowEvent *event) override;
  90. virtual void hideEvent(QHideEvent *event) override;
  91. private:
  92. void refreshAddedList();
  93. void refreshExpList();
  94. private slots:
  95. void slotSave();
  96. void slotRefresh();
  97. void slotAddUser(QFUser *user);
  98. void slotRemoveConfig(UserConfig *config);
  99. void slotImportData(UserConfig *config);
  100. private:
  101. SchemePlanManager::SchemeProcessInfo m_process;
  102. bool m_isProcessChanged = false;
  103. QVBoxLayout *m_vBoxLayout = nullptr;
  104. QLabel *m_titleLabel = nullptr;
  105. QSplitter *m_splitter = nullptr;
  106. QWidget *m_configWidget = nullptr;
  107. QVBoxLayout *m_configWidgetLayout = nullptr;
  108. QWidget *m_configListHeader = nullptr;
  109. QHBoxLayout *m_configListHeaderLayout = nullptr;
  110. QLabel *m_configListTitleLabel = nullptr;
  111. QLabel *m_configListTipsLabel = nullptr;
  112. QPushButton *m_saveButton = nullptr;
  113. QListWidget *m_configListWidget = nullptr;
  114. QWidget *m_expWidget = nullptr;
  115. QVBoxLayout *m_expWidgetLayout = nullptr;
  116. QWidget *m_expListHeader = nullptr;
  117. QHBoxLayout *m_expListHeaderLayout = nullptr;
  118. QLabel *m_expListTitleLabel = nullptr;
  119. QPushButton *m_refreshButton = nullptr;
  120. QListWidget *m_expListWidget = nullptr;
  121. QList<QFUser *> m_expertList;
  122. QList<UserConfig *> m_configList;
  123. };
  124. #endif // CONFIGEXPERTDATAWIDGET_H