You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
4.3 KiB
167 lines
4.3 KiB
/* -*- 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_abstract_scale.h" |
|
|
|
/*! |
|
\brief An abstract base class for slider widgets with a scale |
|
|
|
A slider widget displays a value according to a scale. |
|
The class is designed as a common super class for widgets like |
|
QwtKnob, QwtDial and QwtSlider. |
|
|
|
When the slider is nor readOnly() its value can be modified |
|
by keyboard, mouse and wheel inputs. |
|
|
|
The range of the slider is divided into a number of steps from |
|
which the value increments according to user inputs depend. |
|
Only for linear scales the number of steps correspond with |
|
a fixed step size. |
|
*/ |
|
|
|
class QWT_EXPORT QwtAbstractSlider: public QwtAbstractScale |
|
{ |
|
Q_OBJECT |
|
|
|
Q_PROPERTY( double value READ value WRITE setValue ) |
|
|
|
Q_PROPERTY( uint totalSteps READ totalSteps WRITE setTotalSteps ) |
|
Q_PROPERTY( uint singleSteps READ singleSteps WRITE setSingleSteps ) |
|
Q_PROPERTY( uint pageSteps READ pageSteps WRITE setPageSteps ) |
|
Q_PROPERTY( bool stepAlignment READ stepAlignment WRITE setStepAlignment ) |
|
|
|
Q_PROPERTY( bool readOnly READ isReadOnly WRITE setReadOnly ) |
|
Q_PROPERTY( bool tracking READ isTracking WRITE setTracking ) |
|
Q_PROPERTY( bool wrapping READ wrapping WRITE setWrapping ) |
|
|
|
Q_PROPERTY( bool invertedControls READ invertedControls WRITE setInvertedControls ) |
|
|
|
public: |
|
explicit QwtAbstractSlider( QWidget *parent = NULL ); |
|
virtual ~QwtAbstractSlider(); |
|
|
|
void setValid( bool ); |
|
bool isValid() const; |
|
|
|
double value() const; |
|
|
|
void setWrapping( bool ); |
|
bool wrapping() const; |
|
|
|
void setTotalSteps( uint ); |
|
uint totalSteps() const; |
|
|
|
void setSingleSteps( uint ); |
|
uint singleSteps() const; |
|
|
|
void setPageSteps( uint ); |
|
uint pageSteps() const; |
|
|
|
void setStepAlignment( bool ); |
|
bool stepAlignment() const; |
|
|
|
void setTracking( bool ); |
|
bool isTracking() const; |
|
|
|
void setReadOnly( bool ); |
|
bool isReadOnly() const; |
|
|
|
void setInvertedControls( bool ); |
|
bool invertedControls() const; |
|
|
|
public Q_SLOTS: |
|
void setValue( double val ); |
|
|
|
Q_SIGNALS: |
|
|
|
/*! |
|
\brief Notify a change of value. |
|
|
|
When tracking is enabled (default setting), |
|
this signal will be emitted every time the value changes. |
|
|
|
\param value New value |
|
|
|
\sa setTracking(), sliderMoved() |
|
*/ |
|
void valueChanged( double value ); |
|
|
|
/*! |
|
This signal is emitted when the user presses the |
|
movable part of the slider. |
|
*/ |
|
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 |
|
|
|
\sa valueChanged() |
|
*/ |
|
void sliderMoved( double value ); |
|
|
|
protected: |
|
virtual void mousePressEvent( QMouseEvent * ); |
|
virtual void mouseReleaseEvent( QMouseEvent * ); |
|
virtual void mouseMoveEvent( QMouseEvent * ); |
|
virtual void keyPressEvent( QKeyEvent * ); |
|
virtual void wheelEvent( QWheelEvent * ); |
|
|
|
/*! |
|
\brief Determine what to do when the user presses a mouse button. |
|
|
|
\param pos Mouse position |
|
|
|
\retval True, when pos is a valid scroll position |
|
\sa scrolledTo() |
|
*/ |
|
virtual bool isScrollPosition( const QPoint &pos ) const = 0; |
|
|
|
/*! |
|
\brief Determine the value for a new position of the |
|
movable part of the slider |
|
|
|
\param pos Mouse position |
|
|
|
\return Value for the mouse position |
|
\sa isScrollPosition() |
|
*/ |
|
virtual double scrolledTo( const QPoint &pos ) const = 0; |
|
|
|
void incrementValue( int numSteps ); |
|
|
|
virtual void scaleChange(); |
|
|
|
protected: |
|
virtual void sliderChange(); |
|
|
|
double incrementedValue( |
|
double value, int stepCount ) const; |
|
|
|
private: |
|
double alignedValue( double ) const; |
|
double boundedValue( double ) const; |
|
|
|
class PrivateData; |
|
PrivateData *d_data; |
|
}; |
|
|
|
#endif
|
|
|