#ifndef FLOWGRAPHNODEWIDGET_H #define FLOWGRAPHNODEWIDGET_H #include class QLabel; class QCheckBox; class QComboBox; class QSpinBox; class FlowGraphNodeWidget : public QWidget { Q_OBJECT public: enum NodeWidgetType { Plain, CheckBox, ComboBox, SpinBox, }; explicit FlowGraphNodeWidget(NodeWidgetType type, QWidget *parent = nullptr); NodeWidgetType type() const; signals: protected: NodeWidgetType m_type = Plain; }; class FlowGraphPlainNodeWidget : public FlowGraphNodeWidget { Q_OBJECT public: explicit FlowGraphPlainNodeWidget(QWidget *parent = nullptr); void setText(const QString text); private: QLabel *m_label = nullptr; }; class FlowGraphCheckNodeWidget : public FlowGraphNodeWidget { Q_OBJECT public: explicit FlowGraphCheckNodeWidget(QWidget *parent = nullptr); private: QCheckBox *m_checkBox = nullptr; }; class FlowGraphComboNodeWidget : public FlowGraphNodeWidget { Q_OBJECT public: explicit FlowGraphComboNodeWidget(QWidget *parent = nullptr); QList items() const; void setItems(QList items); private: QComboBox *m_combo = nullptr; QList m_items; }; class FlowGraphSpinNodeWidget : public FlowGraphNodeWidget { Q_OBJECT public: explicit FlowGraphSpinNodeWidget(QWidget *parent = nullptr); private: QSpinBox *m_spinBox = nullptr; }; #endif // FLOWGRAPHNODEWIDGET_H