#pragma once #include "iDlgBase.h" #include "mGuiJob_global.h" class iParaItemCtrl; class ZxDataObject; class ZxDataWell; class iXmlTable; class iXmlField; class M_GUI_JOB_EXPORT iWxDataObjEdit : public iDlgBase { Q_OBJECT public: explicit iWxDataObjEdit(QWidget *parent = 0); ~iWxDataObjEdit(); public: // Title void setTitle(QString s); // TableName void setTableName(QString s); //返回数据体 ZxDataObject* getObjData(); // Obj virtual void setObj(ZxDataObject* p); // 模式 void setEditMode(bool b); // 初始化 virtual void initUI(); // 返回修改的标题,为了树刷新 virtual QString getNodeName(); signals: // 当应用或保存成功时触发 void sigObjDataChanged(VecVariant&, ZxDataObject*); // 在井数据改变之前进行触发,以准备db文件之类 void sigWellDataToChange(bool, VecVariant&, VecVariant&, ZxDataWell*); protected slots: void slotTbxEditingFinished(); // void slotApply(); void slotSaveObj(); void slotCancel(); private: // 初始化子项 void initUI_Title(); QLayout* initUI_Headers(); QLayout* initUI_MainGrids(); QLayout* initUI_Btns(); // 获取表格配置信息 iXmlTable* findTableConfig(); // 范围 QString getScaleStrOf(iXmlField* p); // 根据表名创建一个对应Object的对象体 ZxDataObject* createObjBy(QString sTableName); // 把Obj内容刷新至UI或者反之 bool refreshVec2UI(VecVariant& vec); bool refreshUI2Vec(VecVariant& vec); bool findSubWxInfo(int nRow, QWidget*& pWx, iXmlField*& pF); // 获取所有的区块或者油田名称 QStringList getFieldBlockNames(bool bBlock); // 输入检测 bool checkInputs(); bool checkInputs_WellName(); bool isWellNameOk(QString s); protected: virtual void paintEvent(QPaintEvent *); protected: // 针对数据表 QString m_sTableName; iXmlTable* m_pXmlTable; // 两种传入模式 // Obj ZxDataObject* m_pObj; // Data VecVariant m_vecData; // 如果传入Obj或者ObjData,则为编辑模式,否则新建模式 bool m_bEditMode; // Grid 临时变量,为了方便 QGridLayout* m_pGridLayout; QLineEdit* m_pTbxWellCode; //权宜之计 QLineEdit* m_pTbxWellName; VecInt m_vecHideCols; //隐藏的 VecVariant m_vecHideValues; };