342 lines
9.0 KiB
C++
342 lines
9.0 KiB
C++
#pragma once
|
||
|
||
/**
|
||
* 空基十三五微波算法组件界面组件类集
|
||
* @file KJ135WBJYAlgWidgetComponet.h
|
||
* @brief KJ135WBJYAlgWidgetComponet.h
|
||
* @details
|
||
* 空基十三五微波算法组件界面组件类集
|
||
*/
|
||
|
||
#ifndef __KJ135WBJYAlgInterfaceToolbox_GLOBAL_H__
|
||
#define __KJ135WBJYAlgInterfaceToolbox_GLOBAL_H__
|
||
|
||
#include "KJ135WBJYAlgInterfaceToolbox_global.h"
|
||
#include <QObject>
|
||
#include <QWidget>
|
||
#include <QFileDialog>
|
||
#include <QMessageBox>
|
||
#include <QDebug>
|
||
#include <QToolButton>
|
||
#include <QLineEdit>
|
||
#include <QLabel>
|
||
#include <QComboBox>
|
||
#include <QSpinBox>
|
||
#include <QDoubleSpinBox>
|
||
#include <QCheckBox>
|
||
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 参数类型枚举
|
||
/// </summary>
|
||
enum ComponentType{
|
||
UNKNOW = 0, // 未知类型
|
||
WorkSpace, // 工作空间路径
|
||
FileSelect , // 文件选择
|
||
MulitFileSelect , // 文件选择
|
||
FolderSelect, // 文件夹选择
|
||
ComboxSelect,// 枚举多选
|
||
IntInput,// 整数输入
|
||
stringInput,
|
||
BoxDoubleInput,// 复选框浮点数输入
|
||
DoubleInput,// 浮点数输入
|
||
MultipleSelect,// 多选
|
||
MultiIntInput,// 整数多选输入
|
||
MultiDoubleInput,// 浮点数多选输入
|
||
ScopeIntInput,// 整数范围输入
|
||
ScopeDoubleInput,// 浮点数范围输入
|
||
|
||
};
|
||
|
||
|
||
|
||
|
||
|
||
/**
|
||
<Parameter>
|
||
<ParaName>CoveringIDs</ParaName>
|
||
<ParaChsName>地表覆盖类型数据的类别id</ParaChsName>
|
||
<Description>地表覆盖类型数据中植被区域、裸土区域的类别id,多个id使用“;”分割。示例:GlobeLand30数据的cover_roi_ids = 10;20;30;40;50;70;71;72;83;74;90</Description>
|
||
<ParaType>Value</ParaType>
|
||
<DataType>string</DataType>
|
||
<ParaSource>Man</ParaSource>
|
||
<ParaValue>1;4;5;6;7;11;10;20;30;50;60;70;71;72;73;74;80;90;255</ParaValue>
|
||
<EnModification>True</EnModification>
|
||
<EnMultipleChoice>False</EnMultipleChoice>
|
||
<Control>UploadInput</Control>
|
||
<InputType>Aux</InputType>
|
||
<InputNum>0</InputNum>
|
||
<DateFrom>Aux</DateFrom>
|
||
<OptionValue>DEFAULT</OptionValue>
|
||
<MinValue>DEFAULT</MinValue>
|
||
<MaxValue>DEFAULT</MaxValue>
|
||
<NoDataValue>DEFAULT</NoDataValue>
|
||
<filePath>DEFAULT</filePath>
|
||
</Parameter>
|
||
|
||
**/
|
||
|
||
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();
|
||
};
|
||
|
||
/// <summary>
|
||
/// File 文件选择组件
|
||
/// </summary>
|
||
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;
|
||
};
|
||
|
||
/// <summary>
|
||
/// int输入组件
|
||
/// </summary>
|
||
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;
|
||
|
||
};
|
||
|
||
/// <summary>
|
||
/// double 输入组件
|
||
/// </summary>
|
||
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;
|
||
};
|
||
|
||
/// <summary>
|
||
/// 整数值 数据范围输入组件
|
||
/// </summary>
|
||
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;
|
||
};
|
||
|
||
|
||
/// <summary>
|
||
/// 浮点数值 数据范围输入组件
|
||
/// </summary>
|
||
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;
|
||
};
|
||
|
||
|
||
/// <summary>
|
||
/// 参数文件工厂
|
||
/// </summary>
|
||
/// <param name="ParaName">参数名称</param>
|
||
/// <param name="ParaChsName">参数中文别名</param>
|
||
/// <param name="Datatype">数据类型</param>
|
||
/// <param name="ParaType">参数类型</param>
|
||
/// <param name="Description">描述</param>
|
||
/// <param name="parent">父控件</param>
|
||
/// <returns></returns>
|
||
AbstractComponentWidget* createComponentWidgetFactory(QString ParaName, QString ParaChsName, QString Datatype, QString ParaType, QString Description,QWidget* parent = nullptr);
|
||
|
||
|
||
|
||
|
||
#endif// __KJ135WBJYAlgInterfaceToolbox_GLOBAL_H__
|
||
|