logplus/ModuleConsole/include/ParameterItemControl.h
2026-01-16 17:18:41 +08:00

380 lines
13 KiB
C++

/**
* @file ParameterItemControl.h
* @brief 参数编辑面板中的所有编辑器
* @date 2012-3-27
* @author sinopec
*/
#ifndef PAI_FRAME_WORKFLOWVIEW_PARAMETERITEMCONTROL_H_
#define PAI_FRAME_WORKFLOWVIEW_PARAMETERITEMCONTROL_H_
#include <QDialogButtonBox>
#include <QGroupBox>
#include <QCheckBox>
#include <QDoubleSpinBox>
//#include "PaiCheckBox.h"
#include "PaiSpinBox.h"
//#include "PaiDoubleSpinBox.h"
#include "PaiLineEdit.h"
#include "PaiComboBox.h"
#include "ParameterItem.h"
#include <QFormLayout>
namespace pai
{
namespace gui
{
/**
* @brief 这是个纯虚接口类,代表了参数编辑面板上的编辑器
*/
class CParameterItemControl
{
public:
CParameterItemControl(pai::module::CParameterItem* pParameterItem);
virtual ~CParameterItemControl();
/**
* @brief 将控件中显示的值转化成QVariant并返回
*/
virtual QVariant GetDisplayValue() const=0;
/**
* @brief 将控件对应的值转化成QVariant并返回
*/
virtual QVariant GetValue() const=0;
/**
* @brief 为控件设置当前显示值
* @param varDisplayValue
*/
virtual void SetDisplayValue(const QVariant& varDisplayValue)=0;
/**
* @brief 为控件设置对应的值
*/
virtual void SetValue(const QVariant& varValue)=0;
pai::module::CParameterItem*GetParameterItem()
{
return m_pParameterItem;
}
protected:
pai::module::CParameterItem* m_pParameterItem;
};
///////////////////////////////////////////RADIOBUTTONGROUP///////////////////////////////////
/**
* @class CParameterItemRadioButtonGroup
* @brief 微调样式的参数项编辑器
*/
class CParameterItemRadioButtonGroup: public QGroupBox, public CParameterItemControl
{
Q_OBJECT
public:
/**
* @brief 构造函数
* @param pParameterItem 参数项
* @param pParent 父控件句柄
*/
CParameterItemRadioButtonGroup(pai::module::CParameterItem* pParameterItem,QWidget* pParent=0);
/**
* @brief 将控件中显示的值转化成QVariant并返回
*/
virtual QVariant GetDisplayValue() const;
/**
* @brief 将控件对应的值转化成QVariant并返回
*/
virtual QVariant GetValue() const;
/**
* @brief 为控件设置当前显示值
* @param varDisplayValue
*/
virtual void SetDisplayValue(const QVariant& varDisplayValue);
/**
* @brief 为控件设置对应的值
*/
virtual void SetValue(const QVariant& varValue);
/**
* @brief 安装过滤器
*/
void installEventFilter(QObject * filterObj);
signals:
/**
* @brief 选择内容改变时发送该信号
*/
void signalInternalIndexChanged();
private slots:
/**
* @brief 响应radiobutton的点击
*/
void slotOnToggled(bool toggled);
};
///////////////////////////////////////////SPINBOX///////////////////////////////////
/**
* @class CParameterItemSpinBox
* @brief 微调样式的参数项编辑器
*/
class CParameterItemSpinBox: public PaiSpinBox,public CParameterItemControl
{
public:
/**
* @brief 构造函数
* @param pParameterItem 参数项
* @param pParent 父控件句柄
*/
CParameterItemSpinBox(pai::module::CParameterItem* pParameterItem,QWidget* pParent=0);
/**
* @brief 将控件中显示的值转化成QVariant并返回
*/
virtual QVariant GetDisplayValue() const;
/**
* @brief 将控件对应的值转化成QVariant并返回
*/
virtual QVariant GetValue() const;
/**
* @brief 为控件设置当前显示值
* @param varDisplayValue
*/
virtual void SetDisplayValue(const QVariant& varDisplayValue);
/**
* @brief 为控件设置对应的值
*/
virtual void SetValue(const QVariant& varValue);
};
///////////////////////////////////////////DOUBLE SPINBOX///////////////////////////////////
/**
* @class CParameterItemSpinBox
* @brief 支持浮点的微调样式的参数项编辑器
*/
class CParameterItemDoubleSpinBox: public QDoubleSpinBox,public CParameterItemControl
{
public:
/**
* @brief 构造函数
* @param pParameterItem 参数项
* @param pParent 父控件句柄
*/
CParameterItemDoubleSpinBox(pai::module::CParameterItem* pParameterItem,QWidget* pParent=0);
/**
* @brief 将控件中显示的值转化成QVariant并返回
*/
virtual QVariant GetDisplayValue() const;
/**
* @brief 将控件对应的值转化成QVariant并返回
*/
virtual QVariant GetValue() const;
/**
* @brief 为控件设置当前显示值
* @param varDisplayValue
*/
virtual void SetDisplayValue(const QVariant& varDisplayValue);
/**
* @brief 为控件设置对应的值
*/
virtual void SetValue(const QVariant& varValue);
};
///////////////////////////////////////////CHECKBOX///////////////////////////////////
/**
* @class CParameterItemCheckBox
* @brief 复选框参数项编辑器
*/
class CParameterItemCheckBox: public QCheckBox,public CParameterItemControl
{
public:
/**
* @brief 构造函数
* @param pParameterItem 参数项
* @param pParent 父控件句柄
*/
CParameterItemCheckBox(pai::module::CParameterItem* pParameterItem,QWidget* pParent=0);
/**
* @brief 将控件中显示的值转化成QVariant并返回
*/
virtual QVariant GetDisplayValue() const;
/**
* @brief 将控件对应的值转化成QVariant并返回
*/
virtual QVariant GetValue() const;
/**
* @brief 为控件设置当前显示值
* @param varDisplayValue
*/
virtual void SetDisplayValue(const QVariant& varDisplayValue);
/**
* @brief 为控件设置对应的值
*/
virtual void SetValue(const QVariant& varValue);
};
///////////////////////////////////////////LINEEDIT///////////////////////////////////
/**
* @class CParameterItemLineEdit
* @brief 单行编辑框参数项编辑器
*/
class CParameterItemLineEdit: public PaiLineEdit,public CParameterItemControl
{
Q_OBJECT
public:
/**
* @brief 构造函数
* @param pParameterItem 参数项
* @param pParent 父控件句柄
*/
CParameterItemLineEdit(pai::module::CParameterItem* pParameterItem,QWidget* pParent=0);
/**
* @brief 将控件中显示的值转化成QVariant并返回
*/
virtual QVariant GetDisplayValue() const;
/**
* @brief 将控件对应的值转化成QVariant并返回
*/
virtual QVariant GetValue() const;
/**
* @brief 为控件设置当前显示值
* @param varDisplayValue
*/
virtual void SetDisplayValue(const QVariant& varDisplayValue);
/*virtual */void dropEvent(QDropEvent *pEvent);
/**
* @brief 为控件设置对应的值
*/
virtual void SetValue(const QVariant& varValue);
private slots:
/**
* @brief 响应文本框编辑,将编辑后的值同步到相关参数项
*/
void slotOnEditingFinished(const QString& text);
};
///////////////////////////////////////////COMBOBOX///////////////////////////////////
/**
* @class CParameterItemComboBox
* @brief 组合选择框参数项编辑器
*/
class CParameterItemComboBox: public PaiComboBox,public CParameterItemControl
{
Q_OBJECT
public:
/**
* @brief 构造函数
* @param pParameterItem 参数项
* @param pParent 父控件句柄
*/
CParameterItemComboBox(pai::module::CParameterItem* pParameterItem,QWidget* pParent=0);
/**
* @brief 将控件中显示的值转化成QVariant并返回
*/
virtual QVariant GetDisplayValue() const;
/**
* @brief 将控件对应的值转化成QVariant并返回
*/
virtual QVariant GetValue() const;
/**
* @brief 为控件设置当前显示值
* @param varDisplayValue
*/
virtual void SetDisplayValue(const QVariant& varDisplayValue);
/**
* @brief 为控件设置对应的值
*/
virtual void SetValue(const QVariant& varValue);
public slots:
/**
* @brief 响应currentIndexChnaged 信号
*/
void slotIndexChanged(int index);
signals:
/**
* @brief combox 选择内容改变时发送该信号
*/
void signalInternalIndexChanged();
};
///////////////////////////////////////////Add Button(Special)///////////////////////////////////
/**
* @class CParameterItemButtonBox
* @brief 按钮组参数项编辑器
*/
class CParameterItemButtonBox: public QDialogButtonBox,public CParameterItemControl
{
Q_OBJECT
public slots:
void slotZonesSizeChanged();
public:
pai::module::CParameterItem* CurrentParameterItem;
// PaiComboBox * m_cb_Zones;
/**
* @brief 构造函数
* @param pParameterItem 参数项
* @param pParent 父控件句柄
*/
CParameterItemButtonBox(pai::module::CParameterItem* pParameterItem,QWidget* pParent=0);
/**
* @brief 将控件中显示的值转化成QVariant并返回
*/
virtual QVariant GetDisplayValue() const;
/**
* @brief 将控件对应的值转化成QVariant并返回
*/
virtual QVariant GetValue() const;
/**
* @brief 为控件设置当前显示值
* @param varDisplayValue
*/
virtual void SetDisplayValue(const QVariant& varDisplayValue);
/**
* @brief 为控件设置对应的值
*/
virtual void SetValue(const QVariant& varValue);
};
///////////////////////////////////////////CheckBoxGROUP///////////////////////////////////
/**
* @class CParameterItemCheckBoxGroup
* @brief 微调样式的参数项编辑器
*/
class CParameterItemCheckBoxGroup: public QGroupBox, public CParameterItemControl
{
Q_OBJECT
public:
/**
* @brief 构造函数
* @param pParameterItem 参数项
* @param pParent 父控件句柄
*/
CParameterItemCheckBoxGroup(pai::module::CParameterItem* pParameterItem,QWidget* pParent=0);
/**
* @brief 将控件中显示的值转化成QVariant并返回
*/
virtual QVariant GetDisplayValue() const;
/**
* @brief 将控件对应的值转化成QVariant并返回
*/
virtual QVariant GetValue() const;
/**
* @brief 为控件设置当前显示值
* @param varDisplayValue
*/
virtual void SetDisplayValue(const QVariant& varDisplayValue);
/**
* @brief 为控件设置对应的值
*/
virtual void SetValue(const QVariant& varValue);
/**
* @brief 安装过滤器
*/
void installEventFilter(QObject * filterObj);
signals:
/**
* @brief 选择内容改变时发送该信号
*/
void signalInternalIndexChanged();
private slots:
/**
* @brief 响应radiobutton的点击
*/
void slotOnToggled(bool toggled);
};
}
}
/**
* @brief 根据指定的类型生成校验器并设置到指定的lineedit上
* @param eParamType 指定的参数类型
* @param pLineEdit 编辑框句柄
*/
extern void SetValidator(pai::module::ParameterType eParamType, QLineEdit *pLineEdit, bool isNessary = true);
#endif /* PAI_FRAME_WORKFLOWVIEW_PARAMETERITEMCONTROL_H_ */