380 lines
13 KiB
C++
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_ */
|