#pragma once #include "iWxBase.h" #include "iResultInfo.h" #include "ZxTextEdit.h" #include "mGuiJob_global.h" class iParameter; class iGridResultItem; class iGridResultUtils; namespace Ui { class iWxResult; } class M_GUI_JOB_EXPORT iWxResult : public iWxBase { Q_OBJECT public: // 这个各个子窗体在TabWx中的索引 // TODO 如果手工调整了顺序,需要对应进行修改本枚举的顺序 enum TabSubIndex { TSI_GridRst = 0,//GridResult TSI_Simple, //Simple TSI_NmRst, //NmRst TSI_All, //All TSI_Nm3D, //Nm3D TSI_Temp, //Temp TSI_Unknown }; public: explicit iWxResult(QWidget *parent = 0, \ TabSubIndex tsi = TSI_Unknown); ~iWxResult(); virtual void initSheets(); //Sheet virtual void initUI(); // 序列化 virtual void onSerialize(ZxSerializer* ser); virtual void onDeserialize(ZxSerializer* ser); // 这是显示的数据(详细Tab页)中的标题 // 而不是iWxResult本身的标题 void setTitle(QString s); /// @brief 获取子窗口,为数值模块调用 QWidget* getSubWxOfNm(TabSubIndex tsi, bool bSetAsCurrent); public: // 返回TextEdit指针 QTextEdit* getTbxSimle(); QTextEdit* getTbxAll(); QTextEdit* getTbxTemp(); // 传入数据 void freshResults(QVector& vecResults); //ZXF20240625 模型参数更新 void freshParams(QVector& vecResults); // 追加式传入数据,放在Temp的Tab页 void freshResult_t(QStringList listInfo, bool bWarning = false); void clearResult_t(); // _o oneTab版 void freshResults_o(QVector& vecResults); void clearResult_o(); // 结果对比调用,非常复杂 void freshResults_ResCp(QStringList& listTags, QVector >& vvecInfosM, QVector >& vvecInfosP, QVector >& vvecInfosC); // 填表 void _fillTableWith(QTextTable *pTableWx, \ QVector >* pVVec, \ bool bChart); QString _getRandomType(QVector >* pVVec); // 显示隐藏Tab void setTabItemVisibleEx(TabSubIndex tsi, bool bVisible, \ bool bAutoAsCurrent = false); signals: // 上传 void sigUploadRstParas(); private slots: void slotCustomMenu(QMenu* pMenu); // 对GridRowUtils右键菜单进行调整 virtual void slotAdjustRstUtilContextMenu(QMenu*& pMenu, iGridResultItem* pItem); private: // 传入数据,刷新 // _g grid版,新版 // _s 简易版 // _c详细版 void freshResults_g(QVector& vecResults); void freshResults_s(QVector& vecResults); void freshResults_c(QVector& vecResults); // 解析得到类别 QStringList parseTypes(QVector & vec, bool bSimpleMode = false); // 新的方式(只针对GridResult模式) void initSubUI_g(); void resetRstObjs_g(); void resetRstInfos_g(); void cacheRstInfos_g(QVector& vecResults); void adjustRstInfos_g(QStringList listTypes); QStringList parseTypes_g(); void fresh2RstUtils_g(); // 显示相关 void displayText(QTextCursor& cursor, QString s, Qt::AlignmentFlag oAln = Qt::AlignHCenter, bool bBold = false, bool bReturn = true, bool bWarning = false); QTextTable* createTableWithHeaders(QTextCursor& cursor, \ QStringList listTitles, \ bool bSimpleMode = false); void displayTableHeaders(QTextTable* &pTableWx, \ QStringList listTitles); // n = 0: s 1:c 2:o void displayOneRow(QTextTable* &pTableWx, \ iResultInfo o, \ int n = 0); protected: virtual void paintEvent(QPaintEvent *); private slots: // 打印 void slotPrintResult_s(); void slotPrintResult_c(); void slotPrintResult_t(); void _printResultsOf(QTextEdit* p); private: Ui::iWxResult *ui; // 这是显示的数据(详细Tab页)中的标题 // 而不是iWxResult本身的标题 QString m_sResTitle; // 这是对Tab显示与隐藏的控制 // 非 TSI_Unknown 时,仅仅显示特定的Tab页 // TSI_Unknown 时,所有 // 默认TSI_Unknown,所有 TabSubIndex m_oTsi; // 这是新的方式(TODO,需要增加序列化处理) QVector m_vecAllObjs;//需要析构 QVector m_vecGridRstInfos; iGridResultUtils* m_pGridRstUtils; QVBoxLayout* m_pGridRstLayout; };