#pragma once #include #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& 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 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 m_vecStreches;//如果启用strench采用的数值 };