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

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 "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;
};