~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: 2009-04-12 23:25:58 UTC
  • mfrom: (1.1.4 upstream) (2.1.2 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090412232558-3bl06x785yr8xm8u
Tags: 5.1.2-1
* New upstream release.
* Bump compat/debhelper to 7.
* Bump Standards-Version to 3.8.1. No changes needed.
* Invert Maintainers and Uploaders field.
* Fix lintian warnings:
  - dh_clean _k deprecated.
  - missing dependency on libc.

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
 
}