00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef QWT_COUNTER_H
00013 #define QWT_COUNTER_H
00014
00015 #include <qwidget.h>
00016 #include "qwt_global.h"
00017 #include "qwt_drange.h"
00018
00019 class QwtArrowButton;
00020 class QLineEdit;
00021
00063 class QWT_EXPORT QwtCounter : public QWidget, public QwtDblRange
00064 {
00065 Q_OBJECT
00066
00067 Q_PROPERTY( int numButtons READ numButtons WRITE setNumButtons )
00068 Q_PROPERTY( double basicstep READ step WRITE setStep )
00069 Q_PROPERTY( double minValue READ minVal WRITE setMinValue )
00070 Q_PROPERTY( double maxValue READ maxVal WRITE setMaxValue )
00071 Q_PROPERTY( int stepButton1 READ stepButton1 WRITE setStepButton1 )
00072 Q_PROPERTY( int stepButton2 READ stepButton2 WRITE setStepButton2 )
00073 Q_PROPERTY( int stepButton3 READ stepButton3 WRITE setStepButton3 )
00074 Q_PROPERTY( double value READ value WRITE setValue )
00075
00076 public:
00081 enum Button { Button1, Button2, Button3, ButtonCnt };
00082
00083 QwtCounter(QWidget *parent = 0, const char *name = 0);
00084
00086 double step() const {return QwtDblRange::step();}
00088 void setStep(double s) {QwtDblRange::setStep(s);}
00090 double minVal() const {return minValue();}
00092 void setMinValue(double m) { setRange(m, maxValue(), step());}
00094 double maxVal() const {return QwtDblRange::maxValue();}
00096 void setMaxValue(double m) {setRange(minValue(), m, step());}
00098 void setStepButton1(int nSteps) {setIncSteps(Button1, nSteps);}
00100 int stepButton1() const {return incSteps(Button1);}
00102 void setStepButton2(int nSteps) {setIncSteps(Button2, nSteps);}
00104 int stepButton2() const {return incSteps(Button2);}
00106 void setStepButton3(int nSteps) {setIncSteps(Button3, nSteps);}
00108 int stepButton3() const {return incSteps(Button3);}
00109 virtual double value() const { return QwtDblRange::value();}
00110
00111 void setNumButtons(int n);
00112 int numButtons() const;
00113
00114 void setIncSteps(QwtCounter::Button btn, int nSteps);
00115 int incSteps(QwtCounter::Button btn) const;
00116
00117 virtual void setValue(double);
00118 virtual QSizePolicy sizePolicy() const;
00119 virtual QSize sizeHint() const;
00120
00121 virtual bool eventFilter(QObject *, QEvent *);
00122
00123 signals:
00128 void buttonReleased (double value);
00129
00134 void valueChanged (double value);
00135
00136 protected:
00137 virtual void rangeChange();
00138 virtual void fontChange(const QFont &f);
00139
00140 private slots:
00141 void btnReleased();
00142 void btnClicked();
00143
00144 private:
00145 void updateButtons();
00146 void showNum(double);
00147 virtual void valueChange();
00148
00149 QwtArrowButton *d_buttonDown[ButtonCnt];
00150 QwtArrowButton *d_buttonUp[ButtonCnt];
00151 QLineEdit *d_valueEdit;
00152
00153 int d_increment[ButtonCnt];
00154 int d_nButtons;
00155
00156 bool d_blockKeys;
00157 bool d_keyPressed;
00158 };
00159
00160 #endif