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/mGui/mGuiJob/iWxModelOption.h

153 lines
4.4 KiB
C

#pragma once
#include "iWxBase.h"
#include "mGuiJob_global.h"
//class iModelDesc;
class ZxPlot;
class iWxModelSketch;
class iModelOption;
class iModelInfoBase;
class iGridLineUtils;
namespace Ui {
class iWxModelOption;
}
class M_GUI_JOB_EXPORT iWxModelOption : public iWxBase
{
Q_OBJECT
public:
explicit iWxModelOption(QWidget *parent = 0);
~iWxModelOption();
// 初始化
virtual void initUI();
// 切换模型时刷新
virtual void refreshBrothers(bool bfresh = true);
// 组织结果数据,注vec不进行clear由调用方自行clear
virtual bool organizeResults(QVector<iResultInfo>& vec, QString sType);
// 返回当前选中的
iModelOption* getOption();
// 示意图绘图(多幅,弹出对话框)
virtual void showSketchCharts();
// FitModel之后改变一些状态
void dealwithFitOption(iModelOption* p);
void changeListItem(QListWidget* pListWx, \
QString sItem, QString sKey, \
bool bSelectOnly = true);
void changeRowLineItem(iGridLineUtils* pLineUtils, \
QString sItem, QString sKey, \
bool bSelectOnly = true);
// 得到聚合物中启动低渗的按钮状态
bool getCbxStatePF();
protected:
// void initUI_TopSpecial(QVBoxLayout*& pLayout); //该函数暂时不启用,后续可能需要重启
void initUI_ModelListWxs();
void initFromLasts();
void initUI_ModelGridLines(QVector<iModelInfoBase*>& vec, \
QVBoxLayout* pLayout, \
QString sType = "");
QVector<iModelInfoBase*> classifyModelInfos(QVector<iModelInfoBase*>& vec, \
QString sType);
// 填充List
void fillListWx(QListWidget* pListWx,
QString sType,
bool bConsiderSpecial = false,
bool bIsSpecial = false);
// 在切换时,先处理一下是否有 子 下拉选项
bool dealwithSubCbx(QListWidget* pListWx, bool bUnableSP = false);
// 从当前选项的子选项中进行调整
void adjustBySubCbx(QString sKey, QString& sCode, QString& sTag);
// 界面数据到Option载体
virtual void freshUi2Option();
void _freshUiListWx2Option(QListWidget* pListWx, QString sKey);
void _freshUiCheckBox2Option(QCheckBox* pCbx, QString sKey);
// 最近选用
void freshUiByOpenRecents();
void fillRecentModels();
void refreshRecentModels(QString sModel);
void freshRecentItem2ListWxs(QString s);
public:
// 序列化
virtual void onSerialize(ZxSerializer* ser);
virtual void onDeserialize(ZxSerializer* ser);
protected:
// 对于序列化父类的QListWidget处理已经不能满足要求故重载该函数
virtual bool _writeCtrl(ZxSerializer* ser, QWidget* p, QString& sTag);
virtual bool _readCtrl(ZxSerializer* ser, QWidget*& p, QString& sTag);
protected:
virtual void paintEvent(QPaintEvent *);
protected slots:
// 模型选择
virtual void slotModelOptionChanged(QString);
virtual void on_cbxSubWel_currentIndexChanged(const QString &arg1);
virtual void on_cbxSubRes_currentIndexChanged(const QString &arg1);
// 各自的状态设定,复选框选项
void slotCbxStateChangedLP();
void slotCbxStateChangedPF();
void slotCbxStateChangedSR();
// 筛选部分
void on_btnFilter_clicked();
void on_tbxFilter_textChanged(const QString &arg1);
// 最近选用
void on_listWxRecents_doubleClicked(const QModelIndex &index);
void on_cbxOpenRecents_clicked();
void on_sbRecentCounts_valueChanged(int arg1);
signals:
// 模型切换信号
void sigParasChangedEx(iModelOption* );
// 增加这个信号主要增加小信号的选择模式(目前小信号只比普通模式多一条线,增加信号,保证绘制时候出现)
void sigCbxStateChanged(bool bSmall);
// 聚合物PF
void sigCbxStatePfChanged(bool bCheck);
protected:
Ui::iWxModelOption *ui;
// 选择内容的载体
iModelOption* m_pOption;
// ListWidget Ctrls / CheckBox
QMap<QString, QWidget*> m_mapSubWxs;
// 示意图
iWxModelSketch* m_pWxSketch;
// iWxModelSketch* m_pWxTheory; //二者用的同一个窗体,暂未启用,后续考虑
// 临时变量,不涉及序列化
QString m_sItemSub;
bool m_bRecentDbClick;
};