#pragma once #include "iGuiPlot.h" class ZxTableView; class ZxTableModel; class ZxObjCurveBase; class ZxObjBase; /// @brief 该类基于iGuiPlot,增加了辅助表格,实现表图同步 class M_GUI_PLOT_EXPORT iGuiPlotEx : public iGuiPlot { Q_OBJECT public: explicit iGuiPlotEx(bool bUseBtn = true, QWidget *parent = 0); ~iGuiPlotEx(); // 初始化UI virtual void initUI(QString sTitle, QSize szDefault = QSize(265, 203)); // 辅助表格设置 void setTableHelperVisible(bool b); bool isTableHelperVisible(); int getPosMode(); /// @brief 设置位置信息,只在显示table时有效 /// @param n 0:表左图右 1:表右图左 2:表上图下 3:表下图上 void setPosMode(int n); // 设置表格只读,主要是右键及双击 void setTableReadonly(QString sTag = "", bool bReadonly = true); protected: virtual void paintEvent(QPaintEvent *); QWidget* initTableLayout(); // 为确保一致性,updatePlots中调用updateBrotherTables virtual void updatePlots(); virtual void updateBrotherTables(); // 信号关联 void bindSignals(ZxObjCurveBase* pCurve, ZxTableView* pTableView); public slots: // 表格 void slotTableCellChanged(const QModelIndex&, const QModelIndex&); void slotTableRowChanged(QModelIndexList listOlds, QModelIndexList listNews, QModelIndex index); void slotSubTableSelChanged(); // Curve void slotCurveSelChanged(bool bSelect); void slotCurvePtsChanged(); // plot void slotObjDeleted(ZxObjBase* p); // 在iGuiPlotTableHelper保存时,通过该信号获取对应的DataObj void slotGetDataObjOfView(ZxTableView* pView, ZxDataGaugeBase*& p); signals: // 一旦压力或流量保存之后,则触发其他窗口的刷新 void sigDataSavedPF(QString sCode); private: // Table改变时,刷新曲线 void refreshCurveBy(ZxTableModel* p); public: // 辅助表格 iGuiPlotTableHelper* m_pTableHelper; bool m_bShowTableHelper; //是否显示 int m_nPosMode; //在显示辅助表格时,表图的位置关系 //0:表左图右 1:表右图左 //2:表上图下 3:表下图上 };