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
00017 class QwtRoundScaleDraw;
00018
00034 class QWT_EXPORT QwtKnob : public QwtAbstractSlider, public QwtAbstractScale
00035 {
00036 Q_OBJECT
00037 Q_ENUMS (Symbol)
00038 Q_PROPERTY( int knobWidth READ knobWidth WRITE setKnobWidth )
00039 Q_PROPERTY( int borderWidth READ borderWidth WRITE setBorderWidth )
00040 Q_PROPERTY( double totalAngle READ totalAngle WRITE setTotalAngle )
00041 Q_PROPERTY( Symbol symbol READ symbol WRITE setSymbol )
00042
00043 public:
00049 enum Symbol { Line, Dot };
00050
00051 explicit QwtKnob(QWidget* parent = NULL);
00052 virtual ~QwtKnob();
00053
00054 void setKnobWidth(int w);
00055 int knobWidth() const;
00056
00057 void setTotalAngle (double angle);
00058 double totalAngle() const;
00059
00060 void setBorderWidth(int bw);
00061 int borderWidth() const;
00062
00063 void setSymbol(Symbol);
00064 Symbol symbol() const;
00065
00066 virtual QSize sizeHint() const;
00067 virtual QSize minimumSizeHint() const;
00068
00069 void setScaleDraw(QwtRoundScaleDraw *);
00070 const QwtRoundScaleDraw *scaleDraw() const;
00071 QwtRoundScaleDraw *scaleDraw();
00072
00073 protected:
00074 virtual void paintEvent(QPaintEvent *e);
00075 virtual void resizeEvent(QResizeEvent *e);
00076
00077 void draw(QPainter *p, const QRect& ur);
00078 void drawKnob(QPainter *p, const QRect &r);
00079 void drawMarker(QPainter *p, double arc, const QColor &c);
00080
00081 private:
00082 void initKnob();
00083 void layoutKnob( bool update = true );
00084 double getValue(const QPoint &p);
00085 void getScrollMode( const QPoint &p, int &scrollMode, int &direction );
00086 void recalcAngle();
00087
00088 virtual void valueChange();
00089 virtual void rangeChange();
00090 virtual void scaleChange();
00091 virtual void fontChange(const QFont &oldFont);
00092
00093 class PrivateData;
00094 PrivateData *d_data;
00095 };
00096
00097 #endif