|
|
#pragma once
|
|
|
|
|
|
#include <QWidget>
|
|
|
|
|
|
#include "Defines.h"
|
|
|
|
|
|
#include "iGuiBase_global.h"
|
|
|
|
|
|
class iUnitGroup;
|
|
|
class QHBoxLayout;
|
|
|
class QLineEdit;
|
|
|
class QComboBox;
|
|
|
class QLabel;
|
|
|
class iParameter;
|
|
|
|
|
|
class X_GUI_BASE_EXPORT iParaItemCtrl : public QWidget
|
|
|
{
|
|
|
Q_OBJECT
|
|
|
|
|
|
public:
|
|
|
|
|
|
/// @brief 参数系列,自动从后台获取相关信息
|
|
|
/// @param sPara 参数名称,可以是 英文也可以是中文,软件会自动判断
|
|
|
/// @param pParameter 参数对应的对象体,如果为空,软件会自动判断
|
|
|
/// @param sUnit,当前选取的单位,如果为空,则默认从后台获取
|
|
|
/// @param oValue,当前的数值,如果不传入,则取空
|
|
|
iParaItemCtrl(QString sPara,
|
|
|
QVariant oValue = QVariant(),
|
|
|
QString sUnit = "",
|
|
|
iParameter* pParameter = NULL);
|
|
|
~iParaItemCtrl();
|
|
|
|
|
|
void initUI();
|
|
|
|
|
|
// 20240530 为了布局方便,增加新的方式。
|
|
|
// 把相关的子项直接存入外部传入的Layout(通常是GridLayout)之中
|
|
|
// 该函数接口慎用
|
|
|
void initUI2Layout(QGridLayout* pGridLayout, int nRowIndex);
|
|
|
|
|
|
// 一旦启用该方式,原先的setVisible要改为setChildVisible
|
|
|
void setChildVisible(bool bVisible);
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
// 获取数据
|
|
|
QString getPara();
|
|
|
QString getCurTag();
|
|
|
double getCurValue(); //当前界面显示
|
|
|
QString getCurShowValue(); //当前界面显示
|
|
|
QString getCurUnit();
|
|
|
bool setCurValue(double f); //当前界面显示
|
|
|
bool setCurUnit(QString s);
|
|
|
double getBaseValue(); //基于标准单位的数据(比例为1)
|
|
|
QString getBaseUnit();
|
|
|
|
|
|
int getCbxValue();
|
|
|
|
|
|
// 属性
|
|
|
void setUnitEnable(bool bEnable);
|
|
|
void setUnitEditable(bool bEditable);
|
|
|
void setValueEditable(bool bEditable);
|
|
|
void setShowScale(bool b);
|
|
|
|
|
|
void setStrenchable(bool bStrench);
|
|
|
void setStrenchRatios(QVector<int>& vec);
|
|
|
void setSpacing(int n);
|
|
|
void setMarginLR(int left, int right);
|
|
|
|
|
|
// 子控件
|
|
|
QWidget* getItemEdit();
|
|
|
QWidget* getCbxUnits();
|
|
|
QWidget* getLblUnits();
|
|
|
QWidget* getCbxItem();
|
|
|
// Parameter
|
|
|
iParameter* getParameter();
|
|
|
|
|
|
// 重新调整单位
|
|
|
// NewLand 工区创建的老的Job中流体界面
|
|
|
// 总是没有单位,暂时没有找到原因,只得特殊处理
|
|
|
void resetUnits();
|
|
|
|
|
|
// 设置比例
|
|
|
void adjustStrench();
|
|
|
|
|
|
// 输入检测
|
|
|
bool isInputOk();
|
|
|
|
|
|
signals:
|
|
|
void sigUnableSP(bool&);
|
|
|
void sigValueChanged(QString sPara, QVariant o);
|
|
|
|
|
|
private:
|
|
|
|
|
|
// 单位
|
|
|
void fillUnitWx();
|
|
|
|
|
|
// 对于文本框的范围及颜色管理
|
|
|
void checkAndClr();
|
|
|
|
|
|
// 数据范围
|
|
|
QString getScaleStr();
|
|
|
|
|
|
QVector<int> getStrenchRatios();
|
|
|
|
|
|
private slots:
|
|
|
|
|
|
void slotTextChanged(QString s);
|
|
|
void slotCbxIndexChanged(int index);
|
|
|
void slotTextStrChanged();
|
|
|
|
|
|
private:
|
|
|
QLabel* m_pItemTag; //标签
|
|
|
//QWidget* m_pItemEdit;
|
|
|
QLineEdit* m_pItemEdit; //编辑框
|
|
|
QComboBox* m_pCbxItemEdit;
|
|
|
QComboBox* m_pCbxUnits; //单位下拉
|
|
|
QLabel* m_pLblUnits; //单位显示
|
|
|
QLabel* m_pLblScale; //范围
|
|
|
|
|
|
QComboBox* m_pCbxItemType;//边界类型/或其它类型的下拉
|
|
|
|
|
|
QString m_sPara; //参数名称,可以是 英文也可以是中文,软件会自动判断
|
|
|
double m_fRawValue; //原始值
|
|
|
QString m_sRawUnit; //原始单位
|
|
|
int m_nDigit; //小数位数
|
|
|
|
|
|
iUnitGroup* m_pUnitGroup;//载体
|
|
|
iParameter* m_pParameter;
|
|
|
|
|
|
bool m_bUnitEnable; //单位是否只读
|
|
|
bool m_bUnitEditable; //单位是否可以下拉切换
|
|
|
bool m_bValueEditable; //数值是否可以人工修改
|
|
|
bool m_bShowScale; //是否显示范围
|
|
|
|
|
|
int m_nSpacing; //组件之间的间隔
|
|
|
int m_nMarginL; //整体的左侧偏移(边界)
|
|
|
int m_nMarginR; //整体的右侧偏移(边界)
|
|
|
bool m_bStrench; //是否启用Strench(如果为false,则不启用)
|
|
|
QVector<int> m_vecStreches;//如果启用strench采用的数值
|
|
|
};
|