VisionFlowPro/NodeEditorPro/examples/opcv/CvImageLoaderModel.h
2023-02-28 14:50:28 +08:00

59 lines
1.5 KiB
C++

#pragma once
#include <iostream>
#include <QObject>
#include <QWidget>
#include <QLabel>
#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<NodeData>, 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<NodeData> 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<CvImageData> mCvImageData;
};