Main Page | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members | Related Pages

qwt_knob.h

Go to the documentation of this file.
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_sldbase.h"
00015 #include "qwt_sclif.h"
00016 
00032 class QWT_EXPORT QwtKnob : public QwtSliderBase, public QwtScaleIf
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     QwtKnob(QWidget* parent = 0, const char *name = 0);
00050     virtual ~QwtKnob();
00051 
00052     void setKnobWidth(int w);
00053     int knobWidth() const {return d_knobWidth;};
00054     void setTotalAngle (double angle);
00055     double totalAngle() const {return d_totalAngle;};
00056     void setBorderWidth(int bw);
00057     int borderWidth() const {return d_borderWidth;};
00058     void setSymbol(Symbol);
00059     Symbol symbol() const;
00060 
00061     virtual QSize sizeHint() const;
00062     virtual QSize minimumSizeHint() const;
00063     virtual QSizePolicy sizePolicy() const;
00064     
00065 protected:
00066     virtual void paintEvent(QPaintEvent *e);
00067     virtual void resizeEvent(QResizeEvent *e);
00068 
00069     void draw(QPainter *p, const QRect& ur);
00070     void drawKnob(QPainter *p, const QRect &r);
00071     void drawMarker(QPainter *p, double arc, const QColor &c);
00072 
00073 private:
00074     void layoutKnob( bool update = TRUE );
00075     double getValue(const QPoint &p);
00076     void getScrollMode( const QPoint &p, int &scrollMode, int &direction );
00077     void recalcAngle();
00078     
00079     virtual void valueChange();
00080     virtual void rangeChange();
00081     virtual void scaleChange();
00082     virtual void fontChange(const QFont &oldFont);
00083 
00084     int d_borderWidth;
00085     int d_borderDist;
00086     int d_hasScale;
00087     int d_scaleDist;
00088     int d_maxScaleTicks;
00089     int d_knobWidth;
00090     int d_dotWidth;
00091 
00092     Symbol d_symbol;
00093     double d_angle;
00094     double d_oldAngle;
00095     double d_totalAngle;
00096     double d_nTurns;
00097 
00098     QRect d_kRect;
00099 };
00100 
00101 #endif

Generated on Fri Nov 7 14:11:45 2003 for Qwt Developer's Guide by doxygen 1.3.2