| 1 | /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
|
|---|
| 2 | * Qwt Widget Library
|
|---|
| 3 | * Copyright (C) 1997 Josef Wilgen
|
|---|
| 4 | * Copyright (C) 2002 Uwe Rathmann
|
|---|
| 5 | *
|
|---|
| 6 | * This library is free software; you can redistribute it and/or
|
|---|
| 7 | * modify it under the terms of the Qwt License, Version 1.0
|
|---|
| 8 | *****************************************************************************/
|
|---|
| 9 |
|
|---|
| 10 | #ifndef QWT_COUNTER_H
|
|---|
| 11 | #define QWT_COUNTER_H
|
|---|
| 12 |
|
|---|
| 13 | #include "qwt_global.h"
|
|---|
| 14 | #include <qwidget.h>
|
|---|
| 15 |
|
|---|
| 16 | /*!
|
|---|
| 17 | \brief The Counter Widget
|
|---|
| 18 |
|
|---|
| 19 | A Counter consists of a label displaying a number and
|
|---|
| 20 | one ore more (up to three) push buttons on each side
|
|---|
| 21 | of the label which can be used to increment or decrement
|
|---|
| 22 | the counter's value.
|
|---|
| 23 |
|
|---|
| 24 | A counter has a range from a minimum value to a maximum value
|
|---|
| 25 | and a step size. When the wrapping property is set
|
|---|
| 26 | the counter is circular.
|
|---|
| 27 |
|
|---|
| 28 | The number of steps by which a button increments or decrements the value
|
|---|
| 29 | can be specified using setIncSteps(). The number of buttons can be
|
|---|
| 30 | changed with setNumButtons().
|
|---|
| 31 |
|
|---|
| 32 | Example:
|
|---|
| 33 | \code
|
|---|
| 34 | #include <qwt_counter.h>
|
|---|
| 35 |
|
|---|
| 36 | QwtCounter *counter = new QwtCounter(parent);
|
|---|
| 37 |
|
|---|
| 38 | counter->setRange(0.0, 100.0); // From 0.0 to 100
|
|---|
| 39 | counter->setSingleStep( 1.0 ); // Step size 1.0
|
|---|
| 40 | counter->setNumButtons(2); // Two buttons each side
|
|---|
| 41 | counter->setIncSteps(QwtCounter::Button1, 1); // Button 1 increments 1 step
|
|---|
| 42 | counter->setIncSteps(QwtCounter::Button2, 20); // Button 2 increments 20 steps
|
|---|
| 43 |
|
|---|
| 44 | connect(counter, SIGNAL(valueChanged(double)), myClass, SLOT(newValue(double)));
|
|---|
| 45 | \endcode
|
|---|
| 46 | */
|
|---|
| 47 |
|
|---|
| 48 | class QWT_EXPORT QwtCounter : public QWidget
|
|---|
| 49 | {
|
|---|
| 50 | Q_OBJECT
|
|---|
| 51 |
|
|---|
| 52 | Q_PROPERTY( double value READ value WRITE setValue )
|
|---|
| 53 | Q_PROPERTY( double minimum READ minimum WRITE setMinimum )
|
|---|
| 54 | Q_PROPERTY( double maximum READ maximum WRITE setMaximum )
|
|---|
| 55 | Q_PROPERTY( double singleStep READ singleStep WRITE setSingleStep )
|
|---|
| 56 |
|
|---|
| 57 | Q_PROPERTY( int numButtons READ numButtons WRITE setNumButtons )
|
|---|
| 58 | Q_PROPERTY( int stepButton1 READ stepButton1 WRITE setStepButton1 )
|
|---|
| 59 | Q_PROPERTY( int stepButton2 READ stepButton2 WRITE setStepButton2 )
|
|---|
| 60 | Q_PROPERTY( int stepButton3 READ stepButton3 WRITE setStepButton3 )
|
|---|
| 61 |
|
|---|
| 62 | Q_PROPERTY( bool readOnly READ isReadOnly WRITE setReadOnly )
|
|---|
| 63 | Q_PROPERTY( bool wrapping READ wrapping WRITE setWrapping )
|
|---|
| 64 |
|
|---|
| 65 | public:
|
|---|
| 66 | //! Button index
|
|---|
| 67 | enum Button
|
|---|
| 68 | {
|
|---|
| 69 | //! Button intended for minor steps
|
|---|
| 70 | Button1,
|
|---|
| 71 |
|
|---|
| 72 | //! Button intended for medium steps
|
|---|
| 73 | Button2,
|
|---|
| 74 |
|
|---|
| 75 | //! Button intended for large steps
|
|---|
| 76 | Button3,
|
|---|
| 77 |
|
|---|
| 78 | //! Number of buttons
|
|---|
| 79 | ButtonCnt
|
|---|
| 80 | };
|
|---|
| 81 |
|
|---|
| 82 | explicit QwtCounter( QWidget *parent = NULL );
|
|---|
| 83 | virtual ~QwtCounter();
|
|---|
| 84 |
|
|---|
| 85 | void setValid( bool );
|
|---|
| 86 | bool isValid() const;
|
|---|
| 87 |
|
|---|
| 88 | void setWrapping( bool );
|
|---|
| 89 | bool wrapping() const;
|
|---|
| 90 |
|
|---|
| 91 | bool isReadOnly() const;
|
|---|
| 92 | void setReadOnly( bool );
|
|---|
| 93 |
|
|---|
| 94 | void setNumButtons( int );
|
|---|
| 95 | int numButtons() const;
|
|---|
| 96 |
|
|---|
| 97 | void setIncSteps( QwtCounter::Button, int numSteps );
|
|---|
| 98 | int incSteps( QwtCounter::Button ) const;
|
|---|
| 99 |
|
|---|
| 100 | virtual QSize sizeHint() const;
|
|---|
| 101 |
|
|---|
| 102 | double singleStep() const;
|
|---|
| 103 | void setSingleStep( double stepSize );
|
|---|
| 104 |
|
|---|
| 105 | void setRange( double min, double max );
|
|---|
| 106 |
|
|---|
| 107 | double minimum() const;
|
|---|
| 108 | void setMinimum( double );
|
|---|
| 109 |
|
|---|
| 110 | double maximum() const;
|
|---|
| 111 | void setMaximum( double );
|
|---|
| 112 |
|
|---|
| 113 | void setStepButton1( int nSteps );
|
|---|
| 114 | int stepButton1() const;
|
|---|
| 115 |
|
|---|
| 116 | void setStepButton2( int nSteps );
|
|---|
| 117 | int stepButton2() const;
|
|---|
| 118 |
|
|---|
| 119 | void setStepButton3( int nSteps );
|
|---|
| 120 | int stepButton3() const;
|
|---|
| 121 |
|
|---|
| 122 | double value() const;
|
|---|
| 123 |
|
|---|
| 124 | public Q_SLOTS:
|
|---|
| 125 | void setValue( double );
|
|---|
| 126 |
|
|---|
| 127 |
|
|---|
| 128 | Q_SIGNALS:
|
|---|
| 129 | /*!
|
|---|
| 130 | This signal is emitted when a button has been released
|
|---|
| 131 | \param value The new value
|
|---|
| 132 | */
|
|---|
| 133 | void buttonReleased ( double value );
|
|---|
| 134 |
|
|---|
| 135 | /*!
|
|---|
| 136 | This signal is emitted when the counter's value has changed
|
|---|
| 137 | \param value The new value
|
|---|
| 138 | */
|
|---|
| 139 | void valueChanged ( double value );
|
|---|
| 140 |
|
|---|
| 141 | protected:
|
|---|
| 142 | virtual bool event( QEvent * );
|
|---|
| 143 | virtual void wheelEvent( QWheelEvent * );
|
|---|
| 144 | virtual void keyPressEvent( QKeyEvent * );
|
|---|
| 145 |
|
|---|
| 146 | private Q_SLOTS:
|
|---|
| 147 | void btnReleased();
|
|---|
| 148 | void btnClicked();
|
|---|
| 149 | void textChanged();
|
|---|
| 150 |
|
|---|
| 151 | private:
|
|---|
| 152 | void incrementValue( int numSteps );
|
|---|
| 153 | void initCounter();
|
|---|
| 154 | void updateButtons();
|
|---|
| 155 | void showNumber( double );
|
|---|
| 156 |
|
|---|
| 157 | class PrivateData;
|
|---|
| 158 | PrivateData *d_data;
|
|---|
| 159 | };
|
|---|
| 160 |
|
|---|
| 161 | #endif
|
|---|