RasterProcessTool/Toolbox/KJ135WBJYAlgInterfaceToolbox/KJ135WBJYAlgWidgetComponet.h

342 lines
9.0 KiB
C
Raw Normal View History

2025-05-10 18:34:49 +00:00
#pragma once
/**
2025-05-10 18:34:49 +00:00
*
* @file KJ135WBJYAlgWidgetComponet.h
* @brief KJ135WBJYAlgWidgetComponet.h
* @details
2025-05-10 18:34:49 +00:00
*
*/
#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>
2025-05-08 15:00:13 +00:00
/// <summary>
2025-05-10 18:34:49 +00:00
/// 参数类型枚举
/// </summary>
enum ComponentType{
2025-05-10 18:34:49 +00:00
UNKNOW = 0, // 未知类型
WorkSpace, // 工作空间路径
FileSelect , // 文件选择
MulitFileSelect , // 文件选择
FolderSelect, // 文件夹选择
ComboxSelect,// 枚举多选
IntInput,// 整数输入
stringInput,
BoxDoubleInput,// 复选框浮点数输入
DoubleInput,// 浮点数输入
MultipleSelect,// 多选
MultiIntInput,// 整数多选输入
MultiDoubleInput,// 浮点数多选输入
ScopeIntInput,// 整数范围输入
ScopeDoubleInput,// 浮点数范围输入
};
2025-05-08 15:00:13 +00:00
/**
<Parameter>
<ParaName>CoveringIDs</ParaName>
2025-05-10 18:34:49 +00:00
<ParaChsName>id</ParaChsName>
<Description>id,id使;GlobeLand30cover_roi_ids = 10;20;30;40;50;70;71;72;83;74;90</Description>
2025-05-08 15:00:13 +00:00
<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:
2025-05-10 18:34:49 +00:00
QString ParaName; // 参数名称
QString ParaChsName;// 参数中文名称
QString Description;// 参数描述
2025-05-08 15:00:13 +00:00
2025-05-10 18:34:49 +00:00
QString Datatype;// 数据类型 Value // 决定参数的输入类型
QString ParaType;// 参数类型 string
2025-05-08 15:00:13 +00:00
2025-05-10 18:34:49 +00:00
ComponentType componentType = ComponentType::UNKNOW; // 组件类型
public://属性操作
2025-05-08 15:00:13 +00:00
QString getParaName() const;
void setParaName(const QString& name);
2025-05-10 18:34:49 +00:00
// 设置参数中文名称
2025-05-08 15:00:13 +00:00
QString getParaChsName() const;
void setParaChsName(const QString& name);
2025-05-10 18:34:49 +00:00
// 设置参数描述
2025-05-08 15:00:13 +00:00
QString getDescription() const;
void setDescription(const QString& description);
2025-05-10 18:34:49 +00:00
// 设置数据类型
2025-05-08 15:00:13 +00:00
QString getDatatype() const;
void setDatatype(const QString& datatype);
2025-05-10 18:34:49 +00:00
// 设置参数类型
2025-05-08 15:00:13 +00:00
QString getParaType() const;
void setParaType(const QString& type);
void setComponentType(ComponentType type);
ComponentType getComponentType() const;
2025-05-10 18:34:49 +00:00
virtual QString getValue() const;
virtual void initUI();
2025-05-08 15:00:13 +00:00
};
2025-05-08 15:00:13 +00:00
/// <summary>
2025-05-10 18:34:49 +00:00
/// File 文件选择组件
2025-05-08 15:00:13 +00:00
/// </summary>
class FileSelectWidget : public AbstractComponentWidget
{
Q_OBJECT
public:
2025-05-08 15:00:13 +00:00
FileSelectWidget(QWidget* parent = nullptr);
~FileSelectWidget();
2025-05-10 18:34:49 +00:00
virtual void initUI() override;
private:
2025-05-10 18:34:49 +00:00
QLabel* fileNameLabel=nullptr; // 文件名称
2025-05-08 15:00:13 +00:00
QLineEdit* filePathEdit = nullptr;
QToolButton* fileSelectButton = nullptr;
public slots:
void onFileSelectButtonClicked();
public:
2025-05-10 18:34:49 +00:00
virtual QString getValue() const override;
2025-05-08 15:00:13 +00:00
};
2025-05-08 15:00:13 +00:00
/// <summary>
2025-05-10 18:34:49 +00:00
/// int输入组件
2025-05-08 15:00:13 +00:00
/// </summary>
class IntInputWidget : public AbstractComponentWidget
{
Q_OBJECT
public:
IntInputWidget(QWidget* parent = nullptr);
~IntInputWidget();
2025-05-10 18:34:49 +00:00
virtual void initUI() override;
private:
2025-05-10 18:34:49 +00:00
QLabel* fileNameLabel = nullptr; // 文件名称
2025-05-08 15:00:13 +00:00
QSpinBox* intInput = nullptr;
public:
2025-05-10 18:34:49 +00:00
virtual QString getValue() const override;
2025-05-08 15:00:13 +00:00
};
2025-05-08 15:00:13 +00:00
/// <summary>
2025-05-10 18:34:49 +00:00
/// double 输入组件
2025-05-08 15:00:13 +00:00
/// </summary>
class DoubleInputWidget : public AbstractComponentWidget
{
Q_OBJECT
public:
DoubleInputWidget(QWidget* parent = nullptr);
~DoubleInputWidget();
2025-05-10 18:34:49 +00:00
virtual void initUI() override;
private:
2025-05-10 18:34:49 +00:00
QLabel* fileNameLabel = nullptr; // 文件名称
QLineEdit* doubleInput = nullptr;
2025-05-08 15:00:13 +00:00
public:
2025-05-10 18:34:49 +00:00
virtual QString getValue() const override;
2025-05-08 15:00:13 +00:00
};
2025-05-08 15:00:13 +00:00
/// <summary>
2025-05-10 18:34:49 +00:00
/// 整数值 数据范围输入组件
2025-05-08 15:00:13 +00:00
/// </summary>
class ScopeIntInputWidget : public AbstractComponentWidget
{
Q_OBJECT
public:
ScopeIntInputWidget(QWidget* parent = nullptr);
~ScopeIntInputWidget();
2025-05-10 18:34:49 +00:00
virtual void initUI() override;
2025-05-08 15:00:13 +00:00
private:
2025-05-10 18:34:49 +00:00
QLabel* fileNameLabel = nullptr; // 文件名称
QLabel* scopeConnectStr = nullptr; // 文件名称
2025-05-08 15:00:13 +00:00
QSpinBox* intInputMin = nullptr;
QSpinBox* intInputMax = nullptr;
public:
2025-05-10 18:34:49 +00:00
virtual QString getValue() const override;
2025-05-08 15:00:13 +00:00
};
2025-05-08 15:00:13 +00:00
/// <summary>
2025-05-10 18:34:49 +00:00
/// 浮点数值 数据范围输入组件
2025-05-08 15:00:13 +00:00
/// </summary>
class ScopeDoubleInputWidget : public AbstractComponentWidget
{
Q_OBJECT
public:
ScopeDoubleInputWidget(QWidget* parent = nullptr);
~ScopeDoubleInputWidget();
2025-05-10 18:34:49 +00:00
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;
2025-05-08 15:00:13 +00:00
private:
2025-05-10 18:34:49 +00:00
QLabel* fileNameLabel = nullptr; // 文件名称
QLineEdit* doubleInputMin = nullptr;
2025-05-08 15:00:13 +00:00
public:
2025-05-10 18:34:49 +00:00
virtual QString getValue() const override;
2025-05-08 15:00:13 +00:00
};
2025-05-10 18:34:49 +00:00
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;
};
2025-05-10 18:34:49 +00:00
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;
};
2025-05-10 18:34:49 +00:00
class FeatureCombinationMultiIntInputWidget : public AbstractComponentWidget
{
Q_OBJECT
public:
FeatureCombinationMultiIntInputWidget(QWidget* parent = nullptr);
~FeatureCombinationMultiIntInputWidget();
virtual void initUI() override;
private:
QLabel* fileNameLabel = nullptr; // 文件名称
/*
checkbox
Freemanp_s(0)p_d(1)p_v(2);
Touziα_s(3)ϕ_α(4)τ(5)λ_i(6);
Yamaguchif_s(7)f_d(8)f_v(9)f_h(10);
Cloude-PottierH(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; // 平均散射角α
2025-05-10 18:34:49 +00:00
public:
virtual QString getValue() const override;
};
2025-05-10 18:34:49 +00:00
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;
};
2025-05-10 18:34:49 +00:00
/// <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__