You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWATI/Include/iGui/iGuiBase/iParaItemCtrl.h

142 lines
4.0 KiB
C

#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采用的数值
};