#ifndef GRAPHVIEW_H #define GRAPHVIEW_H #include #include #include #include #include #include "palette.h" class AxisItem; class SliderItem; class SliderInfoItem; class InfoItem; class Scene : public QGraphicsScene { Q_OBJECT public: Scene(QObject *parent = 0) : QGraphicsScene(parent) {} void mousePressEvent(QGraphicsSceneMouseEvent *e); signals: void mouseClicked(const QPointF &pos); }; class GraphView : public QGraphicsView { Q_OBJECT public: GraphView(QWidget *parent = 0); ~GraphView(); void loadData(const QVector &data); void setXLabel(const QString &label); void setYLabel(const QString &label); void setXUnits(const QString &units); void setYUnits(const QString &units); void setXScale(qreal scale); void setYScale(qreal scale); void setPrecision(int p) {_precision = p;} void redraw(); void plot(QPainter *painter, const QRectF &target); void clear(); qreal sliderPosition() const; void setSliderPosition(qreal pos); void addInfo(const QString &key, const QString &value); void clearInfo(); signals: void sliderPositionChanged(qreal); protected: void resizeEvent(QResizeEvent *); qreal _xScale, _yScale; QString _xUnits, _yUnits; QString _xLabel, _yLabel; int _precision; private slots: void emitSliderPositionChanged(const QPointF &pos); void newSliderPosition(const QPointF &pos); private: void createXLabel(); void createYLabel(); void updateBounds(const QPointF &point); void resize(const QSizeF &size); Scene *_scene; AxisItem *_xAxis, *_yAxis; SliderItem *_slider; SliderInfoItem *_sliderInfo; InfoItem *_info; QList _graphs; qreal _xMin, _xMax, _yMin, _yMax; Palette _colorShop; }; #endif // GRAPHVIEW_H