~ubuntu-branches/ubuntu/oneiric/qwt/oneiric-proposed

« back to all changes in this revision

Viewing changes to qwt-5.1.1/examples/sliders/sliders.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Fathi Boudra
  • Date: 2008-05-26 10:26:31 UTC
  • mfrom: (1.1.3 upstream) (2.1.1 lenny)
  • Revision ID: james.westby@ubuntu.com-20080526102631-bp95mfccnrb957nx
Tags: 5.1.1-1
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <math.h>
 
2
#include <qapplication.h>
 
3
#include <qlabel.h>
 
4
#include <qlayout.h>
 
5
#include <qwt_slider.h>
 
6
#include <qwt_scale_engine.h>
 
7
#include <qwt_scale_map.h>
 
8
#include "sliders.h"
 
9
 
 
10
class Layout: public QBoxLayout
 
11
{
 
12
public:
 
13
    Layout(Qt::Orientation o, QWidget *parent = NULL):
 
14
#if QT_VERSION < 0x040000
 
15
        QBoxLayout(parent, QBoxLayout::LeftToRight)
 
16
#else
 
17
        QBoxLayout(QBoxLayout::LeftToRight, parent)
 
18
#endif
 
19
    {
 
20
        if ( o == Qt::Vertical )
 
21
            setDirection(QBoxLayout::TopToBottom);
 
22
 
 
23
        setSpacing(20);
 
24
        setMargin(0);
 
25
    }
 
26
};
 
27
 
 
28
Slider::Slider(QWidget *parent, int sliderType):
 
29
    QWidget(parent)
 
30
{
 
31
    d_slider = createSlider(this, sliderType);
 
32
 
 
33
#if QT_VERSION < 0x040000
 
34
    int alignment = Qt::AlignCenter;
 
35
#else
 
36
    QFlags<Qt::AlignmentFlag> alignment;
 
37
#endif
 
38
    switch(d_slider->scalePosition())
 
39
    {
 
40
        case QwtSlider::NoScale:
 
41
            if ( d_slider->orientation() == Qt::Horizontal )
 
42
                alignment = Qt::AlignHCenter | Qt::AlignTop;
 
43
            else
 
44
                alignment = Qt::AlignVCenter | Qt::AlignLeft;
 
45
            break;
 
46
        case QwtSlider::LeftScale:
 
47
            alignment = Qt::AlignVCenter | Qt::AlignRight;
 
48
            break;
 
49
        case QwtSlider::RightScale:
 
50
            alignment = Qt::AlignVCenter | Qt::AlignLeft;
 
51
            break;
 
52
        case QwtSlider::TopScale:
 
53
            alignment = Qt::AlignHCenter | Qt::AlignBottom;
 
54
            break;
 
55
        case QwtSlider::BottomScale:
 
56
            alignment = Qt::AlignHCenter | Qt::AlignTop;
 
57
            break;
 
58
    }
 
59
 
 
60
    d_label = new QLabel("0", this);
 
61
    d_label->setAlignment(alignment);
 
62
    d_label->setFixedWidth(d_label->fontMetrics().width("10000.9"));
 
63
 
 
64
    connect(d_slider, SIGNAL(valueChanged(double)), SLOT(setNum(double)));
 
65
 
 
66
    QBoxLayout *layout;
 
67
    if ( d_slider->orientation() == Qt::Horizontal )
 
68
        layout = new QHBoxLayout(this);
 
69
    else
 
70
        layout = new QVBoxLayout(this);
 
71
 
 
72
    layout->addWidget(d_slider);
 
73
    layout->addWidget(d_label);
 
74
}
 
75
 
 
76
QwtSlider *Slider::createSlider(QWidget *parent, int sliderType) const
 
77
{
 
78
    QwtSlider *slider = NULL;
 
79
 
 
80
    switch(sliderType)
 
81
    {
 
82
        case 0:
 
83
        {
 
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
 
88
            break;
 
89
        }
 
90
        case 1:
 
91
        {
 
92
            slider = new QwtSlider(parent, 
 
93
                Qt::Horizontal, QwtSlider::NoScale, QwtSlider::BgBoth);
 
94
            slider->setRange(0.0, 1.0, 0.01, 5);
 
95
            break;
 
96
        }
 
97
        case 2:
 
98
        {
 
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);
 
104
            break;
 
105
        }
 
106
        case 3:
 
107
        {
 
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);
 
112
            break;
 
113
        }
 
114
        case 4:
 
115
        {
 
116
            slider = new QwtSlider(parent, 
 
117
                Qt::Vertical, QwtSlider::NoScale, QwtSlider::BgTrough);
 
118
            slider->setRange(0.0,100.0,1.0, 10);
 
119
            break;
 
120
        }
 
121
        case 5:
 
122
        {
 
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);
 
131
            break;
 
132
        }
 
133
    }
 
134
 
 
135
    return slider;
 
136
}
 
137
 
 
138
void Slider::setNum(double v)
 
139
{
 
140
    if ( d_slider->scaleMap().transformation()->type() ==
 
141
        QwtScaleTransformation::Log10 )
 
142
    {
 
143
        v = pow(10.0, v);
 
144
    }
 
145
 
 
146
    QString text;
 
147
    text.setNum(v, 'f', 1);
 
148
 
 
149
    d_label->setText(text);
 
150
}
 
151
 
 
152
SliderDemo::SliderDemo(QWidget *p): 
 
153
    QWidget(p)
 
154
{
 
155
    int i;
 
156
 
 
157
    Layout *hSliderLayout = new Layout(Qt::Vertical);
 
158
    for ( i = 0; i < 3; i++ )
 
159
        hSliderLayout->addWidget(new Slider(this, i));
 
160
    hSliderLayout->addStretch();
 
161
 
 
162
    Layout *vSliderLayout = new Layout(Qt::Horizontal);
 
163
    for ( ; i < 6; i++ )
 
164
        vSliderLayout->addWidget(new Slider(this, i));
 
165
 
 
166
    QLabel *vTitle = new QLabel("Vertical Sliders", this);
 
167
    vTitle->setFont(QFont("Helvetica", 14, QFont::Bold));
 
168
    vTitle->setAlignment(Qt::AlignHCenter);
 
169
 
 
170
    Layout *layout1 = new Layout(Qt::Vertical);
 
171
    layout1->addWidget(vTitle, 0);
 
172
    layout1->addLayout(vSliderLayout, 10);
 
173
 
 
174
    QLabel *hTitle = new QLabel("Horizontal Sliders", this);
 
175
    hTitle->setFont(vTitle->font());
 
176
    hTitle->setAlignment(Qt::AlignHCenter);
 
177
 
 
178
    Layout *layout2 = new Layout(Qt::Vertical);
 
179
    layout2->addWidget(hTitle, 0);
 
180
    layout2->addLayout(hSliderLayout, 10);
 
181
 
 
182
    Layout *mainLayout = new Layout(Qt::Horizontal, this);
 
183
    mainLayout->addLayout(layout1);
 
184
    mainLayout->addLayout(layout2, 10);
 
185
}
 
186
 
 
187
int main (int argc, char **argv)
 
188
{
 
189
    QApplication a(argc, argv);
 
190
 
 
191
    QApplication::setFont(QFont("Helvetica",10));
 
192
 
 
193
    SliderDemo w;
 
194
 
 
195
#if QT_VERSION < 0x040000
 
196
    a.setMainWidget(&w);
 
197
#endif
 
198
    w.show();
 
199
 
 
200
    return a.exec();
 
201
}