qwt_knob.h

00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
00002  * Qwt Widget Library
00003  * Copyright (C) 1997   Josef Wilgen
00004  * Copyright (C) 2002   Uwe Rathmann
00005  *
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the Qwt License, Version 1.0
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 #if QT_VERSION < 0x040000
00053     explicit QwtKnob(QWidget* parent, const char *name);
00054 #endif
00055     virtual ~QwtKnob();
00056 
00057     void setKnobWidth(int w);
00058     int knobWidth() const;
00059 
00060     void setTotalAngle (double angle);
00061     double totalAngle() const;
00062 
00063     void setBorderWidth(int bw);
00064     int borderWidth() const;
00065 
00066     void setSymbol(Symbol);
00067     Symbol symbol() const;
00068 
00069     virtual QSize sizeHint() const;
00070     virtual QSize minimumSizeHint() const;
00071     
00072     void setScaleDraw(QwtRoundScaleDraw *);
00073     const QwtRoundScaleDraw *scaleDraw() const;
00074     QwtRoundScaleDraw *scaleDraw();
00075 
00076 protected:
00077     virtual void paintEvent(QPaintEvent *e);
00078     virtual void resizeEvent(QResizeEvent *e);
00079 
00080     void draw(QPainter *p, const QRect& ur);
00081     void drawKnob(QPainter *p, const QRect &r);
00082     void drawMarker(QPainter *p, double arc, const QColor &c);
00083 
00084 private:
00085     void initKnob();
00086     void layoutKnob( bool update = true );
00087     double getValue(const QPoint &p);
00088     void getScrollMode( const QPoint &p, int &scrollMode, int &direction );
00089     void recalcAngle();
00090     
00091     virtual void valueChange();
00092     virtual void rangeChange();
00093     virtual void scaleChange();
00094     virtual void fontChange(const QFont &oldFont);
00095 
00096     class PrivateData;
00097     PrivateData *d_data;
00098 };
00099 
00100 #endif

Generated on Mon Feb 26 21:22:36 2007 for Qwt User's Guide by  doxygen 1.4.6