#pragma once #include #include #include #include #include "DataModelRegistry.hpp" #include "NodeDataModel.hpp" #include "opcv/CvImageViewWidget.h" #include "opcv/CvImageData.h" using QtNodes::PortType; using QtNodes::PortIndex; using QtNodes::NodeData; using QtNodes::NodeDataType; using QtNodes::NodeDataModel; using QtNodes::NodeValidationState; //class CvImageData; //class CvImageViewWidget; class CvImageLoaderModel :public NodeDataModel { Q_OBJECT public: CvImageLoaderModel(); virtual ~CvImageLoaderModel() {} public: QString caption() const override { return QStringLiteral("cv图像输入"); } QString name() const override { return QStringLiteral("cv图像输入"); } virtual QString modelName() const { return QStringLiteral("cv图像输入"); } void setInData(std::shared_ptr, int) override { } QWidget* embeddedWidget() override { return mCvImageView; } bool resizable() const override { return false; } unsigned int nPorts(PortType portType) const override; NodeDataType dataType(PortType portType, PortIndex portIndex) const override; std::shared_ptr outData(PortIndex port) override; QJsonObject save() const override; void restore(QJsonObject const&) override; void loadImage(QString fileName); protected: bool eventFilter(QObject* object, QEvent* event) override; private: QString imageName; CvImageViewWidget* mCvImageView; std::shared_ptr mCvImageData; };