FlowGraphNodeWidget.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #ifndef FLOWGRAPHNODEWIDGET_H
  2. #define FLOWGRAPHNODEWIDGET_H
  3. #include <QWidget>
  4. class QLabel;
  5. class QCheckBox;
  6. class QComboBox;
  7. class QSpinBox;
  8. class FlowGraphNodeWidget : public QWidget
  9. {
  10. Q_OBJECT
  11. public:
  12. enum NodeWidgetType
  13. {
  14. Plain,
  15. CheckBox,
  16. ComboBox,
  17. SpinBox,
  18. };
  19. explicit FlowGraphNodeWidget(NodeWidgetType type, QWidget *parent = nullptr);
  20. NodeWidgetType type() const;
  21. signals:
  22. protected:
  23. NodeWidgetType m_type = Plain;
  24. };
  25. class FlowGraphPlainNodeWidget : public FlowGraphNodeWidget
  26. {
  27. Q_OBJECT
  28. public:
  29. explicit FlowGraphPlainNodeWidget(QWidget *parent = nullptr);
  30. void setText(const QString text);
  31. private:
  32. QLabel *m_label = nullptr;
  33. };
  34. class FlowGraphCheckNodeWidget : public FlowGraphNodeWidget
  35. {
  36. Q_OBJECT
  37. public:
  38. explicit FlowGraphCheckNodeWidget(QWidget *parent = nullptr);
  39. private:
  40. QCheckBox *m_checkBox = nullptr;
  41. };
  42. class FlowGraphComboNodeWidget : public FlowGraphNodeWidget
  43. {
  44. Q_OBJECT
  45. public:
  46. explicit FlowGraphComboNodeWidget(QWidget *parent = nullptr);
  47. QList<QString> items() const;
  48. void setItems(QList<QString> items);
  49. private:
  50. QComboBox *m_combo = nullptr;
  51. QList<QString> m_items;
  52. };
  53. class FlowGraphSpinNodeWidget : public FlowGraphNodeWidget
  54. {
  55. Q_OBJECT
  56. public:
  57. explicit FlowGraphSpinNodeWidget(QWidget *parent = nullptr);
  58. private:
  59. QSpinBox *m_spinBox = nullptr;
  60. };
  61. #endif // FLOWGRAPHNODEWIDGET_H