30 #include "labeled_slider.moc"
43 int min,
int max,
int ste)
47 if (m_step == 0) m_step = 1;
49 m_slider =
new QSlider(
this);
50 m_slider->setOrientation(Qt::Horizontal);
51 m_slider->setMinimum(min);
52 m_slider->setMaximum(max);
53 m_slider->setSingleStep(m_step);
55 m_spinb =
new KIntSpinBox(
this);
56 m_spinb->setMinimum(min);
57 m_spinb->setMaximum(max);
58 m_slider->setSingleStep(m_step);
59 m_spinb->setValue(max);
61 m_spinb->setAlignment(Qt::AlignRight);
62 m_spinb->setValue(min);
64 m_spinb->setValue(min);
67 connect(m_spinb, SIGNAL(
valueChanged(
int)),
this, SLOT(syncValues(
int)));
68 connect(m_slider, SIGNAL(
valueChanged(
int)),
this, SLOT(syncValues(
int)));
69 connect(m_slider, SIGNAL(sliderReleased()),
this, SLOT(fixValue()));
84 m_spinb->setSuffix(text);
89 if (value != m_slider->value()) m_slider->setValue(value);
90 else if (value != m_spinb->value()) m_spinb->setValue(value);
96 m_slider->setRange(min, max);
97 m_spinb->setRange(min, max);
103 if (m_step == 0) m_step = 1;
104 m_slider->setSingleStep(m_step);
105 m_spinb->setSingleStep(m_step);
108 void LabeledSlider::syncValues(
int value)
110 if (value != m_spinb->value()) m_spinb->setValue(value);
111 else if (value != m_slider->value()) {
113 if ((value - m_slider->minimum())%m_step != 0) {
114 if (value > m_spinb->value()) {
115 m_slider->setValue(m_slider->value()+(m_step-(value - m_spinb->value())));
118 m_slider->setValue(m_slider->value()-(m_step-(m_spinb->value() -
value)));
123 m_slider->setValue(value);
129 void LabeledSlider::fixValue()
132 int rest = (m_slider->value() - m_slider->minimum())%m_step;
135 if (rest > (m_step/2)) m_slider->setValue(m_slider->value()+(m_step-rest));
136 else m_slider->setValue(m_slider->value()-rest);
137 m_spinb->setValue(m_slider->value());
void setSuffix(const KLocalizedString &text)
Set the unit.
void setValue(int)
Set the slider value.
LabeledSlider(QWidget *parent, const QString &text, int min, int max, int st)
Create the slider.
void setRange(int min, int max)
void valueChanged(int)
Emit the slider value changes.