2
#include <qapplication.h>
5
#include <qwt_slider.h>
6
#include <qwt_scale_engine.h>
7
#include <qwt_scale_map.h>
10
class Layout: public QBoxLayout
13
Layout(Qt::Orientation o, QWidget *parent = NULL):
14
#if QT_VERSION < 0x040000
15
QBoxLayout(parent, QBoxLayout::LeftToRight)
17
QBoxLayout(QBoxLayout::LeftToRight, parent)
20
if ( o == Qt::Vertical )
21
setDirection(QBoxLayout::TopToBottom);
28
Slider::Slider(QWidget *parent, int sliderType):
31
d_slider = createSlider(this, sliderType);
33
#if QT_VERSION < 0x040000
34
int alignment = Qt::AlignCenter;
36
QFlags<Qt::AlignmentFlag> alignment;
38
switch(d_slider->scalePosition())
40
case QwtSlider::NoScale:
41
if ( d_slider->orientation() == Qt::Horizontal )
42
alignment = Qt::AlignHCenter | Qt::AlignTop;
44
alignment = Qt::AlignVCenter | Qt::AlignLeft;
46
case QwtSlider::LeftScale:
47
alignment = Qt::AlignVCenter | Qt::AlignRight;
49
case QwtSlider::RightScale:
50
alignment = Qt::AlignVCenter | Qt::AlignLeft;
52
case QwtSlider::TopScale:
53
alignment = Qt::AlignHCenter | Qt::AlignBottom;
55
case QwtSlider::BottomScale:
56
alignment = Qt::AlignHCenter | Qt::AlignTop;
60
d_label = new QLabel("0", this);
61
d_label->setAlignment(alignment);
62
d_label->setFixedWidth(d_label->fontMetrics().width("10000.9"));
64
connect(d_slider, SIGNAL(valueChanged(double)), SLOT(setNum(double)));
67
if ( d_slider->orientation() == Qt::Horizontal )
68
layout = new QHBoxLayout(this);
70
layout = new QVBoxLayout(this);
72
layout->addWidget(d_slider);
73
layout->addWidget(d_label);
76
QwtSlider *Slider::createSlider(QWidget *parent, int sliderType) const
78
QwtSlider *slider = NULL;
84
slider = new QwtSlider(parent,
85
Qt::Horizontal, QwtSlider::TopScale, QwtSlider::BgTrough);
86
slider->setThumbWidth(10);
87
slider->setRange(-10.0, 10.0, 1.0, 0); // paging disabled
92
slider = new QwtSlider(parent,
93
Qt::Horizontal, QwtSlider::NoScale, QwtSlider::BgBoth);
94
slider->setRange(0.0, 1.0, 0.01, 5);
99
slider = new QwtSlider(parent,
100
Qt::Horizontal, QwtSlider::BottomScale, QwtSlider::BgSlot);
101
slider->setThumbWidth(25);
102
slider->setThumbLength(12);
103
slider->setRange(1000.0, 3000.0, 10.0, 10);
108
slider = new QwtSlider(parent,
109
Qt::Vertical, QwtSlider::LeftScale, QwtSlider::BgSlot);
110
slider->setRange(0.0, 100.0, 1.0, 5);
111
slider->setScaleMaxMinor(5);
116
slider = new QwtSlider(parent,
117
Qt::Vertical, QwtSlider::NoScale, QwtSlider::BgTrough);
118
slider->setRange(0.0,100.0,1.0, 10);
123
slider = new QwtSlider(parent,
124
Qt::Vertical, QwtSlider::RightScale, QwtSlider::BgBoth);
125
slider->setScaleEngine(new QwtLog10ScaleEngine);
126
slider->setThumbWidth(20);
127
slider->setBorderWidth(1);
128
slider->setRange(0.0, 4.0, 0.01);
129
slider->setScale(1.0, 1.0e4);
130
slider->setScaleMaxMinor(10);
138
void Slider::setNum(double v)
140
if ( d_slider->scaleMap().transformation()->type() ==
141
QwtScaleTransformation::Log10 )
147
text.setNum(v, 'f', 1);
149
d_label->setText(text);
152
SliderDemo::SliderDemo(QWidget *p):
157
Layout *hSliderLayout = new Layout(Qt::Vertical);
158
for ( i = 0; i < 3; i++ )
159
hSliderLayout->addWidget(new Slider(this, i));
160
hSliderLayout->addStretch();
162
Layout *vSliderLayout = new Layout(Qt::Horizontal);
164
vSliderLayout->addWidget(new Slider(this, i));
166
QLabel *vTitle = new QLabel("Vertical Sliders", this);
167
vTitle->setFont(QFont("Helvetica", 14, QFont::Bold));
168
vTitle->setAlignment(Qt::AlignHCenter);
170
Layout *layout1 = new Layout(Qt::Vertical);
171
layout1->addWidget(vTitle, 0);
172
layout1->addLayout(vSliderLayout, 10);
174
QLabel *hTitle = new QLabel("Horizontal Sliders", this);
175
hTitle->setFont(vTitle->font());
176
hTitle->setAlignment(Qt::AlignHCenter);
178
Layout *layout2 = new Layout(Qt::Vertical);
179
layout2->addWidget(hTitle, 0);
180
layout2->addLayout(hSliderLayout, 10);
182
Layout *mainLayout = new Layout(Qt::Horizontal, this);
183
mainLayout->addLayout(layout1);
184
mainLayout->addLayout(layout2, 10);
187
int main (int argc, char **argv)
189
QApplication a(argc, argv);
191
QApplication::setFont(QFont("Helvetica",10));
195
#if QT_VERSION < 0x040000