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++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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