00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_SLIDER_H
00011 #define QWT_SLIDER_H
00012
00013 #include "qwt_global.h"
00014 #include "qwt_abstract_scale.h"
00015 #include "qwt_abstract_slider.h"
00016
00017 class QwtScaleDraw;
00018
00032 class QWT_EXPORT QwtSlider : public QwtAbstractSlider, public QwtAbstractScale
00033 {
00034 Q_OBJECT
00035 Q_ENUMS( ScalePos )
00036 Q_ENUMS( BGSTYLE )
00037 Q_PROPERTY( ScalePos scalePosition READ scalePosition
00038 WRITE setScalePosition )
00039 Q_PROPERTY( BGSTYLE bgStyle READ bgStyle WRITE setBgStyle )
00040 Q_PROPERTY( int thumbLength READ thumbLength WRITE setThumbLength )
00041 Q_PROPERTY( int thumbWidth READ thumbWidth WRITE setThumbWidth )
00042 Q_PROPERTY( int borderWidth READ borderWidth WRITE setBorderWidth )
00043
00044 public:
00045
00054 enum ScalePos
00055 {
00056 NoScale,
00057
00058 LeftScale,
00059 RightScale,
00060 TopScale,
00061 BottomScale
00062 };
00063
00068 enum BGSTYLE
00069 {
00070 BgTrough = 0x1,
00071 BgSlot = 0x2,
00072 BgBoth = BgTrough | BgSlot
00073 };
00074
00075 explicit QwtSlider( QWidget *parent,
00076 Qt::Orientation = Qt::Horizontal,
00077 ScalePos = NoScale, BGSTYLE bgStyle = BgTrough );
00078
00079 virtual ~QwtSlider();
00080
00081 virtual void setOrientation( Qt::Orientation );
00082
00083 void setBgStyle( BGSTYLE );
00084 BGSTYLE bgStyle() const;
00085
00086 void setScalePosition( ScalePos s );
00087 ScalePos scalePosition() const;
00088
00089 int thumbLength() const;
00090 int thumbWidth() const;
00091 int borderWidth() const;
00092
00093 void setThumbLength( int l );
00094 void setThumbWidth( int w );
00095 void setBorderWidth( int bw );
00096 void setMargins( int x, int y );
00097
00098 virtual QSize sizeHint() const;
00099 virtual QSize minimumSizeHint() const;
00100
00101 void setScaleDraw( QwtScaleDraw * );
00102 const QwtScaleDraw *scaleDraw() const;
00103
00104 protected:
00105 virtual double getValue( const QPoint &p );
00106 virtual void getScrollMode( const QPoint &p,
00107 int &scrollMode, int &direction );
00108
00109 void draw( QPainter *p, const QRect& update_rect );
00110 virtual void drawSlider ( QPainter *p, const QRect &r );
00111 virtual void drawThumb( QPainter *p, const QRect &, int pos );
00112
00113 virtual void resizeEvent( QResizeEvent *e );
00114 virtual void paintEvent ( QPaintEvent *e );
00115
00116 virtual void valueChange();
00117 virtual void rangeChange();
00118 virtual void scaleChange();
00119 virtual void fontChange( const QFont &oldFont );
00120
00121 void layoutSlider( bool update = true );
00122 int xyPosition( double v ) const;
00123
00124 QwtScaleDraw *scaleDraw();
00125
00126 private:
00127 void initSlider( Qt::Orientation, ScalePos scalePos, BGSTYLE bgStyle );
00128
00129 class PrivateData;
00130 PrivateData *d_data;
00131 };
00132
00133 #endif