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