123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997 Josef Wilgen
- * Copyright (C) 2002 Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
- #ifndef QWT_ABSTRACT_SLIDER_H
- #define QWT_ABSTRACT_SLIDER_H
- #include "qwt_global.h"
- #include "qwt_double_range.h"
- #include <qwidget.h>
- /*!
- \brief An abstract base class for slider widgets
- QwtAbstractSlider is a base class for
- slider widgets. It handles mouse events
- and updates the slider's value accordingly. Derived classes
- only have to implement the getValue() and
- getScrollMode() members, and should react to a
- valueChange(), which normally requires repainting.
- */
- class QWT_EXPORT QwtAbstractSlider : public QWidget, public QwtDoubleRange
- {
- Q_OBJECT
- Q_PROPERTY( bool readOnly READ isReadOnly WRITE setReadOnly )
- Q_PROPERTY( bool valid READ isValid WRITE setValid )
- Q_PROPERTY( double mass READ mass WRITE setMass )
- Q_PROPERTY( Qt::Orientation orientation
- READ orientation WRITE setOrientation )
- public:
- /*!
- Scroll mode
- \sa getScrollMode()
- */
- enum ScrollMode
- {
- ScrNone,
- ScrMouse,
- ScrTimer,
- ScrDirect,
- ScrPage
- };
- explicit QwtAbstractSlider( Qt::Orientation, QWidget *parent = NULL );
- virtual ~QwtAbstractSlider();
- void setUpdateTime( int t );
- void stopMoving();
- void setTracking( bool enable );
- virtual void setMass( double val );
- virtual double mass() const;
- virtual void setOrientation( Qt::Orientation o );
- Qt::Orientation orientation() const;
- bool isReadOnly() const;
- /*
- Wrappers for QwtDblRange::isValid/QwtDblRange::setValid made
- to be available as Q_PROPERTY in the designer.
- */
- /*!
- \sa QwtDblRange::isValid()
- */
- bool isValid() const
- {
- return QwtDoubleRange::isValid();
- }
- /*!
- \param valid true/false
- \sa QwtDblRange::isValid()
- */
- void setValid( bool valid )
- {
- QwtDoubleRange::setValid( valid );
- }
- public Q_SLOTS:
- virtual void setValue( double val );
- virtual void fitValue( double val );
- virtual void incValue( int steps );
- virtual void setReadOnly( bool );
- Q_SIGNALS:
- /*!
- \brief Notify a change of value.
- In the default setting
- (tracking enabled), this signal will be emitted every
- time the value changes ( see setTracking() ).
- \param value new value
- */
- void valueChanged( double value );
- /*!
- This signal is emitted when the user presses the
- movable part of the slider (start ScrMouse Mode).
- */
- void sliderPressed();
- /*!
- This signal is emitted when the user releases the
- movable part of the slider.
- */
- void sliderReleased();
- /*!
- This signal is emitted when the user moves the
- slider with the mouse.
- \param value new value
- */
- void sliderMoved( double value );
- protected:
- virtual void setPosition( const QPoint & );
- virtual void valueChange();
- virtual void timerEvent( QTimerEvent *e );
- virtual void mousePressEvent( QMouseEvent *e );
- virtual void mouseReleaseEvent( QMouseEvent *e );
- virtual void mouseMoveEvent( QMouseEvent *e );
- virtual void keyPressEvent( QKeyEvent *e );
- virtual void wheelEvent( QWheelEvent *e );
- /*!
- \brief Determine the value corresponding to a specified poind
- This is an abstract virtual function which is called when
- the user presses or releases a mouse button or moves the
- mouse. It has to be implemented by the derived class.
- \param p point
- */
- virtual double getValue( const QPoint & p ) = 0;
- /*!
- \brief Determine what to do when the user presses a mouse button.
- This function is abstract and has to be implemented by derived classes.
- It is called on a mousePress event. The derived class can determine
- what should happen next in dependence of the position where the mouse
- was pressed by returning scrolling mode and direction. QwtAbstractSlider
- knows the following modes:
- - ScrNone\n
- Scrolling switched off. Don't change the value.
- - ScrMouse
- Change the value while the user keeps the
- button pressed and moves the mouse.
- - ScrTimer
- Automatic scrolling. Increment the value in the specified direction
- as long as the user keeps the button pressed.
- - ScrPage
- Automatic scrolling. Same as ScrTimer, but increment by page size.
- \param p point where the mouse was pressed
- \retval scrollMode The scrolling mode
- \retval direction direction: 1, 0, or -1.
- */
- virtual void getScrollMode( const QPoint &p,
- int &scrollMode, int &direction ) = 0;
- void setMouseOffset( double );
- double mouseOffset() const;
- int scrollMode() const;
- private:
- void buttonReleased();
- class PrivateData;
- PrivateData *d_data;
- };
- #endif
|