1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
/* Copyright © 2014 Uwe Rathmann This file is copied from Qwt project; you can redistribute it and/or modify it under the terms of the Qwt License, Version 1.0. You can obtain the original source code and the details of the Qwt License from the Qwt website: http://qwt.sourceforge.net/ */ #ifndef _SCROLLZOOMER_H #define _SCROLLZOOMER_H #include <qglobal.h> #include <qwt_plot_zoomer.h> #include <qwt_plot.h> class ScrollData; class ScrollBar; class ScrollZoomer: public QwtPlotZoomer { Q_OBJECT public: enum ScrollBarPosition { AttachedToScale, OppositeToScale }; ScrollZoomer( QWidget * ); virtual ~ScrollZoomer(); ScrollBar *horizontalScrollBar() const; ScrollBar *verticalScrollBar() const; void setHScrollBarMode( Qt::ScrollBarPolicy ); void setVScrollBarMode( Qt::ScrollBarPolicy ); Qt::ScrollBarPolicy vScrollBarMode () const; Qt::ScrollBarPolicy hScrollBarMode () const; void setHScrollBarPosition( ScrollBarPosition ); void setVScrollBarPosition( ScrollBarPosition ); ScrollBarPosition hScrollBarPosition() const; ScrollBarPosition vScrollBarPosition() const; QWidget* cornerWidget() const; virtual void setCornerWidget( QWidget * ); virtual bool eventFilter( QObject *, QEvent * ); virtual void rescale(); protected: virtual ScrollBar *scrollBar( Qt::Orientation ); virtual void updateScrollBars(); virtual void layoutScrollBars( const QRect & ); private Q_SLOTS: void scrollBarMoved( Qt::Orientation o, double min, double max ); private: bool needScrollBar( Qt::Orientation ) const; int oppositeAxis( int ) const; QWidget *d_cornerWidget; ScrollData *d_hScrollData; ScrollData *d_vScrollData; bool d_inZoom; bool d_alignCanvasToScales[ QwtPlot::axisCnt ]; }; #endif