#pragma once #include "ZxRenderView.h" #include "tCurvePlotScene.h" #include "iPlotCurveT_global.h" // 图视图 class I_PLOTCURVE_T_EXPORT tCurvePlotView : public ZxRenderView { Q_OBJECT ZX_DECLARE_DYNAMIC public: tCurvePlotView(); public: // 获取Scene,仅仅类型转换 tCurvePlotScene* getScene() const; virtual QRectF adjustRectFitViewAspect(const QRectF& rect); // 准备右键菜单 virtual void onPrepareContextMenu(QMenu* pMenu, const QPointF& pos); // 图示简易模式(不显示缩放、不有滚动条) virtual void setSimpleMode(bool bSimpleMode); public slots: virtual void slotSaveAsImg(); virtual void slotCopyAsImg(); virtual void slotShowHideTitle(); virtual void slotShowHideLegend(); virtual void slotUndo(); virtual void slotRedo(); #ifdef _SACN_OLD_CODES_ virtual void slotOptAxisXY(); virtual void slotOptAxisX(); virtual void slotOptAxisY(); public: virtual void optMainAxisScale(bool bX); #endif signals: // 由于本来不依赖数据对象,所有通过信号槽关联出去 void sigCheckDragAccepted(QDragEnterEvent*, bool&); void sigDealwithDrop(QDropEvent*); void sigMousePosChanged(const QPointF &pos); // 获取额外的tips,比如 探测半径 void sigGetTipsExOfPos(QString& sTip, double dX, double dY); // 状态栏 void sigFresh2Status(QString& s); // 允许外部进行菜单调整,通常是插入,默认是在 Redo/Undo 与保存图片 之间 void sigAdjustContextMenu(QMenu* pMenu); #ifdef _SACN_OLD_CODES_ // 优化显示坐标轴 void sigOptMainAxisScale(bool); #endif protected: /// @brief 拖拽支持 void dragEnterEvent(QDragEnterEvent *event); void dropEvent(QDropEvent* event); void mouseMoveEvent(QMouseEvent* e); void focusOutEvent(QFocusEvent *); void leaveEvent(QEvent *); protected: bool m_bSimpleMode; //是否简易模式 // 拖拽模式 bool m_bDraging; };