1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/* -*- 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_SLIDER_H
#define QWT_SLIDER_H
#include "qwt_global.h"
#include "qwt_abstract_slider.h"
class QwtScaleDraw;
/*!
\brief The Slider Widget
QwtSlider is a slider widget which operates on an interval
of type double. Its position is related to a scale showing
the current value.
The slider can be customized by having a through, a groove - or both.
\image html sliders.png
*/
class QWT_EXPORT QwtSlider: public QwtAbstractSlider
{
Q_OBJECT
Q_ENUMS( ScalePosition BackgroundStyle )
Q_PROPERTY( Qt::Orientation orientation
READ orientation WRITE setOrientation )
Q_PROPERTY( ScalePosition scalePosition READ scalePosition
WRITE setScalePosition )
Q_PROPERTY( bool trough READ hasTrough WRITE setTrough )
Q_PROPERTY( bool groove READ hasGroove WRITE setGroove )
Q_PROPERTY( QSize handleSize READ handleSize WRITE setHandleSize )
Q_PROPERTY( int borderWidth READ borderWidth WRITE setBorderWidth )
Q_PROPERTY( int spacing READ spacing WRITE setSpacing )
public:
/*!
Position of the scale
\sa QwtSlider(), setScalePosition(), setOrientation()
*/
enum ScalePosition
{
//! The slider has no scale
NoScale,
//! The scale is right of a vertical or below a horizontal slider
LeadingScale,
//! The scale is left of a vertical or above a horizontal slider
TrailingScale
};
explicit QwtSlider( QWidget *parent = NULL );
explicit QwtSlider( Qt::Orientation, QWidget *parent = NULL );
virtual ~QwtSlider();
void setOrientation( Qt::Orientation );
Qt::Orientation orientation() const;
void setScalePosition( ScalePosition );
ScalePosition scalePosition() const;
void setTrough( bool );
bool hasTrough() const;
void setGroove( bool );
bool hasGroove() const;
void setHandleSize( const QSize & );
QSize handleSize() const;
void setBorderWidth( int bw );
int borderWidth() const;
void setSpacing( int );
int spacing() const;
virtual QSize sizeHint() const;
virtual QSize minimumSizeHint() const;
void setScaleDraw( QwtScaleDraw * );
const QwtScaleDraw *scaleDraw() const;
void setUpdateInterval( int );
int updateInterval() const;
protected:
virtual double scrolledTo( const QPoint & ) const;
virtual bool isScrollPosition( const QPoint & ) const;
virtual void drawSlider ( QPainter *, const QRect & ) const;
virtual void drawHandle( QPainter *, const QRect &, int pos ) const;
virtual void mousePressEvent( QMouseEvent * );
virtual void mouseReleaseEvent( QMouseEvent * );
virtual void resizeEvent( QResizeEvent * );
virtual void paintEvent ( QPaintEvent * );
virtual void changeEvent( QEvent * );
virtual void timerEvent( QTimerEvent * );
virtual void scaleChange();
QRect sliderRect() const;
QRect handleRect() const;
private:
QwtScaleDraw *scaleDraw();
void layoutSlider( bool );
void initSlider( Qt::Orientation );
class PrivateData;
PrivateData *d_data;
};
#endif