#pragma once #include #include #include #include using QtNodes::PortType; using QtNodes::PortIndex; using QtNodes::NodeData; using QtNodes::NodeDataType; using QtNodes::NodeDataModel; using QtNodes::NodeValidationState; /// The class can potentially incapsulate any user data which /// need to be transferred within the Node Editor graph class MyNodeData : public NodeData { public: NodeDataType type() const override { return NodeDataType {QLatin1String("MyNodeData"), QLatin1String("My Node Data")}; } }; //------------------------------------------------------------------------------ /// The model dictates the number of inputs and outputs for the Node. /// In this example it has no logic. class MyDataModel : public NodeDataModel { Q_OBJECT public: virtual ~MyDataModel() {} public: QString caption() const override { return QString("My Data Model"); } QString name() const override { return QString("MyDataModel"); } public: QJsonObject save() const override { QJsonObject modelJson; modelJson["name"] = name(); return modelJson; } public: unsigned int nPorts(PortType) const override { return 3; } NodeDataType dataType(PortType, PortIndex) const override { return MyNodeData().type(); } std::shared_ptr outData(PortIndex) override { return std::make_shared(); } void setInData(std::shared_ptr, int) override { // } QWidget * embeddedWidget() override { return nullptr; } };