# qwt_counter.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_COUNTER_H
    00011 #define QWT_COUNTER_H
    00012
    00013 #include "qwt_global.h"
    00014 #include "qwt_double_range.h"
    00015 #include <qwidget.h>
    00016
    00058 class QWT_EXPORT QwtCounter : public QWidget, public QwtDoubleRange
    00059 {
    00060     Q_OBJECT
    00061
    00062     Q_PROPERTY( int numButtons READ numButtons WRITE setNumButtons )
    00063     Q_PROPERTY( double basicstep READ step WRITE setStep )
    00064     Q_PROPERTY( double minValue READ minValue WRITE setMinValue )
    00065     Q_PROPERTY( double maxValue READ maxValue WRITE setMaxValue )
    00066     Q_PROPERTY( int stepButton1 READ stepButton1 WRITE setStepButton1 )
    00067     Q_PROPERTY( int stepButton2 READ stepButton2 WRITE setStepButton2 )
    00068     Q_PROPERTY( int stepButton3 READ stepButton3 WRITE setStepButton3 )
    00069     Q_PROPERTY( double value READ value WRITE setValue )
    00070     Q_PROPERTY( bool editable READ editable WRITE setEditable )
    00071
    00072 public:
    00074     enum Button
    00075     {
    00077         Button1,
    00078
    00080         Button2,
    00081
    00083         Button3,
    00084
    00086         ButtonCnt
    00087     };
    00088
    00089     explicit QwtCounter( QWidget *parent = NULL );
    00090     virtual ~QwtCounter();
    00091
    00092     bool editable() const;
    00093     void setEditable( bool );
    00094
    00095     void setNumButtons( int n );
    00096     int numButtons() const;
    00097
    00098     void setIncSteps( QwtCounter::Button btn, int nSteps );
    00099     int incSteps( QwtCounter::Button btn ) const;
    00100
    00101     virtual void setValue( double );
    00102     virtual QSize sizeHint() const;
    00103
    00104     // a set of dummies to help the designer
    00105
    00106     double step() const;
    00107     void setStep( double s );
    00108
    00109     double minValue() const;
    00110     void setMinValue( double m );
    00111
    00112     double maxValue() const;
    00113     void setMaxValue( double m );
    00114
    00115     void setStepButton1( int nSteps );
    00116     int stepButton1() const;
    00117
    00118     void setStepButton2( int nSteps );
    00119     int stepButton2() const;
    00120
    00121     void setStepButton3( int nSteps );
    00122     int stepButton3() const;
    00123
    00124     virtual double value() const;
    00125
    00126 Q_SIGNALS:
    00131     void buttonReleased ( double value );
    00132
    00137     void valueChanged ( double value );
    00138
    00139 protected:
    00140     virtual bool event( QEvent * );
    00141     virtual void wheelEvent( QWheelEvent * );
    00142     virtual void keyPressEvent( QKeyEvent * );
    00143     virtual void rangeChange();
    00144
    00145 private Q_SLOTS:
    00146     void btnReleased();
    00147     void btnClicked();
    00148     void textChanged();
    00149
    00150 private:
    00151     void initCounter();
    00152     void updateButtons();
    00153     void showNum( double );
    00154     virtual void valueChange();
    00155
    00156     class PrivateData;
    00157     PrivateData *d_data;
    00158 };
    00159
    00160 #endif