#pragma once /** * 空基十三五微波算法组件界面组件类集 * @file KJ135WBJYAlgWidgetComponet.h * @brief KJ135WBJYAlgWidgetComponet.h * @details * 空基十三五微波算法组件界面组件类集 */ #ifndef __KJ135WBJYAlgInterfaceToolbox_GLOBAL_H__ #define __KJ135WBJYAlgInterfaceToolbox_GLOBAL_H__ #include "KJ135WBJYAlgInterfaceToolbox_global.h" #include #include #include #include #include #include #include #include #include #include #include #include /// /// 参数类型枚举 /// enum ComponentType{ UNKNOW = 0, // 未知类型 WorkSpace, // 工作空间路径 FileSelect , // 文件选择 MulitFileSelect , // 文件选择 FolderSelect, // 文件夹选择 ComboxSelect,// 枚举多选 IntInput,// 整数输入 stringInput, BoxDoubleInput,// 复选框浮点数输入 DoubleInput,// 浮点数输入 MultipleSelect,// 多选 MultiIntInput,// 整数多选输入 MultiDoubleInput,// 浮点数多选输入 ScopeIntInput,// 整数范围输入 ScopeDoubleInput,// 浮点数范围输入 }; /** CoveringIDs 地表覆盖类型数据的类别id 地表覆盖类型数据中植被区域、裸土区域的类别id,多个id使用“;”分割。示例:GlobeLand30数据的cover_roi_ids = 10;20;30;40;50;70;71;72;83;74;90 Value string Man 1;4;5;6;7;11;10;20;30;50;60;70;71;72;73;74;80;90;255 True False UploadInput Aux 0 Aux DEFAULT DEFAULT DEFAULT DEFAULT DEFAULT **/ class AbstractComponentWidget : public QWidget { Q_OBJECT public: AbstractComponentWidget(QWidget* parent = nullptr); ~AbstractComponentWidget(); protected: QString ParaName; // 参数名称 QString ParaChsName;// 参数中文名称 QString Description;// 参数描述 QString Datatype;// 数据类型 Value // 决定参数的输入类型 QString ParaType;// 参数类型 string ComponentType componentType = ComponentType::UNKNOW; // 组件类型 public://属性操作 QString getParaName() const; void setParaName(const QString& name); // 设置参数中文名称 QString getParaChsName() const; void setParaChsName(const QString& name); // 设置参数描述 QString getDescription() const; void setDescription(const QString& description); // 设置数据类型 QString getDatatype() const; void setDatatype(const QString& datatype); // 设置参数类型 QString getParaType() const; void setParaType(const QString& type); void setComponentType(ComponentType type); ComponentType getComponentType() const; virtual QString getValue() const; virtual void initUI(); }; /// /// File 文件选择组件 /// class FileSelectWidget : public AbstractComponentWidget { Q_OBJECT public: FileSelectWidget(QWidget* parent = nullptr); ~FileSelectWidget(); virtual void initUI() override; private: QLabel* fileNameLabel=nullptr; // 文件名称 QLineEdit* filePathEdit = nullptr; QToolButton* fileSelectButton = nullptr; public slots: void onFileSelectButtonClicked(); public: virtual QString getValue() const override; }; /// /// int输入组件 /// class IntInputWidget : public AbstractComponentWidget { Q_OBJECT public: IntInputWidget(QWidget* parent = nullptr); ~IntInputWidget(); virtual void initUI() override; private: QLabel* fileNameLabel = nullptr; // 文件名称 QSpinBox* intInput = nullptr; public: virtual QString getValue() const override; }; /// /// double 输入组件 /// class DoubleInputWidget : public AbstractComponentWidget { Q_OBJECT public: DoubleInputWidget(QWidget* parent = nullptr); ~DoubleInputWidget(); virtual void initUI() override; private: QLabel* fileNameLabel = nullptr; // 文件名称 QLineEdit* doubleInput = nullptr; public: virtual QString getValue() const override; }; /// /// 整数值 数据范围输入组件 /// class ScopeIntInputWidget : public AbstractComponentWidget { Q_OBJECT public: ScopeIntInputWidget(QWidget* parent = nullptr); ~ScopeIntInputWidget(); virtual void initUI() override; private: QLabel* fileNameLabel = nullptr; // 文件名称 QLabel* scopeConnectStr = nullptr; // 文件名称 QSpinBox* intInputMin = nullptr; QSpinBox* intInputMax = nullptr; public: virtual QString getValue() const override; }; /// /// 浮点数值 数据范围输入组件 /// class ScopeDoubleInputWidget : public AbstractComponentWidget { Q_OBJECT public: ScopeDoubleInputWidget(QWidget* parent = nullptr); ~ScopeDoubleInputWidget(); virtual void initUI() override; private: QLabel* fileNameLabel = nullptr; // 文件名称 QLabel* scopeConnectStr = nullptr; // 文件名称 QLineEdit* doubleInputMin = nullptr; QLineEdit* doubleInputMax = nullptr; public: virtual QString getValue() const override; }; class BoxDoubleInputWidget : public AbstractComponentWidget { Q_OBJECT public: BoxDoubleInputWidget(QWidget* parent = nullptr); ~BoxDoubleInputWidget(); virtual void initUI() override; private: QLabel* fileNameLabel = nullptr; // 文件名称 QLineEdit* doubleInputMin = nullptr; public: virtual QString getValue() const override; }; class MultiIntInputWidget : public AbstractComponentWidget { Q_OBJECT public: MultiIntInputWidget(QWidget* parent = nullptr); ~MultiIntInputWidget(); virtual void initUI() override; private: QLabel* fileNameLabel = nullptr; // 文件名称 QLineEdit* IntInputMin = nullptr; public: virtual QString getValue() const override; }; class MultiDoubleInputWidget : public AbstractComponentWidget { Q_OBJECT public: MultiDoubleInputWidget(QWidget* parent = nullptr); ~MultiDoubleInputWidget(); virtual void initUI() override; private: QLabel* fileNameLabel = nullptr; // 文件名称 QLineEdit* doubleInputMin = nullptr; public: virtual QString getValue() const override; }; class CorrectMethodcomboxSelectWidget : public AbstractComponentWidget { Q_OBJECT public: CorrectMethodcomboxSelectWidget(QWidget* parent = nullptr); ~CorrectMethodcomboxSelectWidget(); virtual void initUI() override; private: QLabel* fileNameLabel = nullptr; // 文件名称 QComboBox* comboxSelect = nullptr; public: virtual QString getValue() const override; }; class FeatureCombinationMultiIntInputWidget : public AbstractComponentWidget { Q_OBJECT public: FeatureCombinationMultiIntInputWidget(QWidget* parent = nullptr); ~FeatureCombinationMultiIntInputWidget(); virtual void initUI() override; private: QLabel* fileNameLabel = nullptr; // 文件名称 /* 根据下面的参数,设置一个 checkbox 阵列 Freeman:表面散射p_s(0)、偶次散射p_d(1)、体散射p_v(2); Touzi:散射角α_s(3)、散射相位ϕ_α(4)、目标散射对称度τ(5)、相对能量λ_i(6); Yamaguchi:表面散射f_s(7)、二次散射f_d(8)、体散射f_v(9)、螺旋体散射f_h(10); Cloude-Pottier:分解散射熵H(11)、反熵A(12)、平均散射角α(13)*/ QCheckBox* checkbox0 = nullptr; // 表面散射 QCheckBox* checkbox1 = nullptr; // 偶次散射p_d QCheckBox* checkbox2 = nullptr; // 体散射p_v QCheckBox* checkbox3 = nullptr; // 散射角α_s QCheckBox* checkbox4 = nullptr; // 散射相位ϕ_α QCheckBox* checkbox5 = nullptr; // 目标散射对称度τ QCheckBox* checkbox6 = nullptr; // 相对能量λ_i QCheckBox* checkbox7 = nullptr; // 表面散射f_s QCheckBox* checkbox8 = nullptr; // 二次散射f_d QCheckBox* checkbox9 = nullptr; // 体散射f_v QCheckBox* checkbox10 = nullptr; // 螺旋体散射f_h QCheckBox* checkbox11 = nullptr; // 分解散射熵H QCheckBox* checkbox12 = nullptr; // 反熵A QCheckBox* checkbox13 = nullptr; // 平均散射角α public: virtual QString getValue() const override; }; class StringInputWidget :public AbstractComponentWidget { Q_OBJECT public: StringInputWidget(QWidget* parent = nullptr); ~StringInputWidget(); virtual void initUI() override; private: QLabel* fileNameLabel = nullptr; // 文件名称 QLineEdit* IntInputMin = nullptr; public: virtual QString getValue() const override; }; /// /// 参数文件工厂 /// /// 参数名称 /// 参数中文别名 /// 数据类型 /// 参数类型 /// 描述 /// 父控件 /// AbstractComponentWidget* createComponentWidgetFactory(QString ParaName, QString ParaChsName, QString Datatype, QString ParaType, QString Description,QWidget* parent = nullptr); #endif// __KJ135WBJYAlgInterfaceToolbox_GLOBAL_H__