RasterProcessTool/Toolbox/KJ135WBJYAlgInterfaceToolbox/KJ135WBJYAlgWidgetComponet.h

342 lines
9.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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__