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.
nmWTAI-Platform/Include/iPlot/iPlotWxT/iPlotBaseWxT.h

125 lines
3.2 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 "Defines.h"
#include "IxSerDes.h"
#include "ZxXpf.h"
#include "ZxSerializer.h"
#include "iPlotWxT_global.h"
class tCurvePlotScene;
class tCurvePlotView;
class ZxPlot;
class ZxObjCurve;
class tCurveObjFlow;
class ZxSubAxisBase;
class ZxObjCurveBase;
// 这是最基础的绘图窗体
class I_PLOTWX_T_EXPORT iPlotBaseWxT : public QWidget,
virtual public IxSerDes
{
Q_OBJECT
public:
explicit iPlotBaseWxT(QWidget *parent = 0);
~iPlotBaseWxT();
// 初始化UI
virtual void initUI(QString sTitle,
QSize szDefault = QSize(265, 203));
virtual void clearAllPlots();
public:
// 坐标轴相关设置
virtual void setAxisX(QString sName, QString sUnit = "");
virtual void setAxisY(QString sName, QString sUnit = "", bool bY2 = false);
virtual void setAxisXY(int nIndexXY, QString sName, QString sUnit = "");
virtual void setAxisScaleX(double dMin, double dMax, VecDouble& vecTicks);
virtual void setAxisScaleY(double dMin, double dMax, VecDouble& vecTicks, \
bool bAdjustSpan = false, double dPreferedSpan = -1.0);
virtual void setAxisScaleY2(double dMin, double dMax, VecDouble& vecTicks);
virtual void setAxisScaleXY(int nIndexXY, double& dMin, double& dMax, VecDouble& vecTicks);
virtual void setAxisXYLog(bool bLogAxis, int nIndexXY);
// nIndexXY:0 x轴1 左侧y轴2 右侧y轴
ZxSubAxisBase* getAxisOf(int nIndexXY);
void copyAxisScalesTo(iPlotBaseWxT* pDest, int nIndexXY = -1);
// 设置x轴的基准时间
void setAxisBaseDtX(QDateTime dt);
QDateTime getAxisBaseDtX() const;
virtual void connectSignals();
// 序列化
virtual void onSerialize(ZxSerializer* ser);
virtual void onDeserialize(ZxSerializer* ser);
virtual void resetAfterDeserialized();
protected:
virtual void initChartView(QString sTitle, QSize szDefault);
virtual void resizeEvent(QResizeEvent *);
virtual void paintEvent(QPaintEvent *);
// 窗体关闭的情形
virtual void closeEvent(QCloseEvent *);
// 处理Resize主要是正方形网格
bool changeToSize(QSize sz, bool bResizeMode);
public slots:
virtual void slotChangeSizeWithChangedXY();
// 缩放复原
virtual void zoomReset();
/// 响应信号:对于临时图层的特殊处理,比如在绘图图元移动过程中,隐藏(如果已经显示)十字线
virtual void slotSaveTempLayerStates();
virtual void slotRestoreTempLayerStates();
signals:
void sigZoomReset();
// 在关闭的消息函数中触发
void sigConfirmClosing(bool& bClosable);
public:
// 内部变量
tCurvePlotView* m_pPlotView;
tCurvePlotScene* m_pPlotScene;
ZxPlot* m_pPlot;
protected:
QLayout* m_pMainLayout;
// 记录各坐标轴原始状态
// 为了回归原始
double m_dMaxX;
double m_dMinX;
double m_dMaxY;
double m_dMinY;
double m_dMaxY2;
double m_dMinY2;
VecDouble m_vecTicksX;
VecDouble m_vecTicksY;
VecDouble m_vecTicksY2;
// 信号槽标识开关
bool m_bUnableSP;
// 是否启用新的样式表ZXF202407
bool m_bNovelQss;
// 临时,不涉及序列化
bool m_bLastShowCrossLine;
bool m_bLastShowTips;
};