00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_KNOB_H
00011 #define QWT_KNOB_H
00012
00013 #include "qwt_global.h"
00014 #include "qwt_abstract_slider.h"
00015 #include "qwt_abstract_scale.h"
00016
00032 class QWT_EXPORT QwtKnob : public QwtAbstractSlider, public QwtAbstractScale
00033 {
00034 Q_OBJECT
00035 Q_ENUMS (Symbol)
00036 Q_PROPERTY( int knobWidth READ knobWidth WRITE setKnobWidth )
00037 Q_PROPERTY( int borderWidth READ borderWidth WRITE setBorderWidth )
00038 Q_PROPERTY( double totalAngle READ totalAngle WRITE setTotalAngle )
00039 Q_PROPERTY( Symbol symbol READ symbol WRITE setSymbol )
00040
00041 public:
00047 enum Symbol { Line, Dot };
00048
00049 explicit QwtKnob(QWidget* parent = NULL);
00050 virtual ~QwtKnob();
00051
00052 void setKnobWidth(int w);
00053 int knobWidth() const;
00054
00055 void setTotalAngle (double angle);
00056 double totalAngle() const;
00057
00058 void setBorderWidth(int bw);
00059 int borderWidth() const;
00060
00061 void setSymbol(Symbol);
00062 Symbol symbol() const;
00063
00064 virtual QSize sizeHint() const;
00065 virtual QSize minimumSizeHint() const;
00066
00067 protected:
00068 virtual void paintEvent(QPaintEvent *e);
00069 virtual void resizeEvent(QResizeEvent *e);
00070
00071 void draw(QPainter *p, const QRect& ur);
00072 void drawKnob(QPainter *p, const QRect &r);
00073 void drawMarker(QPainter *p, double arc, const QColor &c);
00074
00075 private:
00076 void layoutKnob( bool update = true );
00077 double getValue(const QPoint &p);
00078 void getScrollMode( const QPoint &p, int &scrollMode, int &direction );
00079 void recalcAngle();
00080
00081 virtual void valueChange();
00082 virtual void rangeChange();
00083 virtual void scaleChange();
00084 virtual void fontChange(const QFont &oldFont);
00085
00086 class PrivateData;
00087 PrivateData *d_data;
00088 };
00089
00090 #endif