#pragma once #include "iWxBase.h" #include "mGuiAnal_global.h" class M_GUI_ANAL_EXPORT iWxAnalWizard : public iWxBase { Q_OBJECT public: // enum nmWizardShowMode // { // NM_WSM_Basic = 0, //基础 // NM_WSM_Pvt, //Pvt // NM_WSM_Diffusion, //Diffusion // NM_WSM_Pseu, //Pseu // NM_WSM_SubPF_Miu, //PF's Miu // NM_WSM_SubPF_AS, //PF's AS // NM_WSM_SubPF_K, //PF's K // NM_WSM_All, //All // NM_WSM_Unknown // }; public: explicit iWxAnalWizard(QWidget *parent = 0); ~iWxAnalWizard(); void clearWx(); virtual void initUI(); // 显示模式 void setSingleMode(bool bSingle); bool isSingleMode(); // 子窗体 void appendSubWx(iWxBase* p); void resetSubWx(iWxBase* p = nullptr); signals: void sigWizardOptionOk(); private: // 初始化 void initBase(); void updateBtnStates(); // 标题 void changeTitle(); protected: virtual void paintEvent(QPaintEvent *); virtual void onSerialize(ZxSerializer* ser); virtual void onDeserialize(ZxSerializer* ser); private slots: void on_btnBack_clicked(); void on_btnNext_clicked(); void on_btnCancel_clicked(); // 改变一下规则,只有Basic时,才在左下角显示,文件存取以及帮助,因为其它本身已经具备Ribbon模式 // 这两个函数是对左下角的响应函数 void slotLoadBassicFromFile(); void slotSaveBasicToFile(); void slotHelp(); // 各个子窗体的具体响应 void slotLoadSubWxFromFile(int nAWI); void slotSaveSubWxToFile(int nAWI); void slotSubWxHelp(int nAWI); // 当流体性质改变时,本窗体响应 virtual void slotParasObtained(QMap& map); // 当Anal标识改变时,本窗体响应 //void slotAnalTagChanged(QString s); private: iWxBase* getSubWxOf(int nAWI); QString getSubWxExtOf(int nAWI); ZxDataObject* getSubWxTempObjOf(int nAWI); private: bool m_bSingleMode; // 子窗体,本类不负责创建维护 // 分别为 Basic、Fluid、(Gas Const)、PF QVector m_vecSubWxs; // 子窗体容器 QStackedWidget* m_pStackedWidget; // Btn QPushButton* m_pBtnBack; QPushButton* m_pBtnNext; QPushButton* m_pBtnCancel; // 改变一下规则,只有Basic时,才在左下角显示,文件存取以及帮助,因为其它本身已经具备Ribbon模式 // 但是在具体实现时,为了统一,每个子窗口的存取都统一由Wizard进行触发 QPushButton* m_pBtnLoad; QPushButton* m_pBtnSave; QPushButton* m_pBtnHelp; // 是否显示气体组分(在流体为 gas 时)显示 bool m_bShowGasConst; int m_nIndexHide; };