23 #include <QHBoxLayout>
39 int toInt(
double _value)
const;
93 q->setSizePolicy(
QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed,
94 QSizePolicy::Slider));
103 q->connect(this->
Slider, SIGNAL(minimumValueChanged(
int)),
104 q, SLOT(onMinValueChanged(
int)));
105 q->connect(this->
Slider, SIGNAL(maximumValueChanged(
int)),
106 q, SLOT(onMaxValueChanged(
int)));
107 q->connect(this->
Slider, SIGNAL(valuesChanged(
int,
int)),
108 q, SLOT(onValuesChanged(
int,
int)));
110 q->connect(this->
Slider, SIGNAL(minimumPositionChanged(
int)),
111 q, SLOT(onMinPosChanged(
int)));
112 q->connect(this->
Slider, SIGNAL(maximumPositionChanged(
int)),
113 q, SLOT(onMaxPosChanged(
int)));
114 q->connect(this->
Slider, SIGNAL(positionsChanged(
int,
int)),
115 q, SLOT(onPositionsChanged(
int,
int)));
117 q->connect(this->
Slider, SIGNAL(sliderPressed()),
118 q, SIGNAL(sliderPressed()));
119 q->connect(this->
Slider, SIGNAL(sliderReleased()),
120 q, SIGNAL(sliderReleased()));
121 q->connect(this->
Slider, SIGNAL(rangeChanged(
int,
int)),
122 q, SLOT(onRangeChanged(
int,
int)));
129 int intValue = qRound(tmp);
187 if (d->Minimum >= d->MinValue)
189 d->updateMinOffset(d->Minimum);
191 if (d->Minimum >= d->MaxValue)
193 d->updateMaxOffset(d->Minimum);
195 d->SettingRange =
true;
196 d->Slider->setMinimum(d->toInt(min));
197 d->SettingRange =
false;
213 if (d->Maximum <= d->MinValue)
215 d->updateMinOffset(d->Maximum);
217 if (d->Maximum <= d->MaxValue)
219 d->updateMaxOffset(d->Maximum);
221 d->SettingRange =
true;
222 d->Slider->setMaximum(d->toInt(max));
223 d->SettingRange =
false;
240 if (d->Minimum >= d->MinValue)
242 d->updateMinOffset(d->Minimum);
244 if (d->Minimum >= d->MaxValue)
246 d->updateMaxOffset(d->Minimum);
248 if (d->Maximum <= d->MinValue)
250 d->updateMinOffset(d->Maximum);
252 if (d->Maximum <= d->MaxValue)
254 d->updateMaxOffset(d->Maximum);
256 d->SettingRange =
true;
257 d->Slider->setRange(d->toInt(min), d->toInt(max));
258 d->SettingRange =
false;
266 return d->minFromInt(d->Slider->minimumPosition());
273 d->Slider->setMinimumPosition(d->toInt(minPos));
280 return d->maxFromInt(d->Slider->maximumPosition());
287 d->Slider->setMaximumPosition(d->toInt(maxPos));
294 d->Slider->setPositions(d->toInt(minPos), d->toInt(maxPos));
308 newMinValue = qBound(d->Minimum, newMinValue, d->Maximum);
309 d->updateMinOffset(newMinValue);
310 if (newMinValue >= d->MaxValue)
312 d->updateMaxOffset(newMinValue);
314 int newIntValue = d->toInt(newMinValue);
315 if (newIntValue != d->Slider->minimumValue())
319 d->Slider->setMinimumValue(newIntValue);
323 double oldValue = d->MinValue;
324 d->MinValue = newMinValue;
327 if (qAbs(newMinValue - oldValue) > (d->SingleStep * 0.000000001))
346 newMaxValue = qBound(d->Minimum, newMaxValue, d->Maximum);
347 d->updateMaxOffset(newMaxValue);
348 if (newMaxValue <= d->MinValue)
350 d->updateMinOffset(newMaxValue);
352 int newIntValue = d->toInt(newMaxValue);
353 if (newIntValue != d->Slider->maximumValue())
357 d->Slider->setMaximumValue(newIntValue);
361 double oldValue = d->MaxValue;
362 d->MaxValue = newMaxValue;
365 if (qAbs(newMaxValue - oldValue) > (d->SingleStep * 0.000000001))
380 double newMinValue = qBound(d->Minimum, qMin(newMinVal, newMaxVal), d->Maximum);
381 double newMaxValue = qBound(d->Minimum, qMax(newMinVal, newMaxVal), d->Maximum);
382 d->updateMinOffset(newMinValue);
383 d->updateMaxOffset(newMaxValue);
384 int newMinIntValue = d->toInt(newMinValue);
385 int newMaxIntValue = d->toInt(newMaxValue);
386 if (newMinIntValue != d->Slider->minimumValue() ||
387 newMaxIntValue != d->Slider->maximumValue())
391 d->Slider->setValues(newMinIntValue, newMaxIntValue);
395 double oldMinValue = d->MinValue;
396 double oldMaxValue = d->MaxValue;
397 d->MinValue = newMinValue;
398 d->MaxValue = newMaxValue;
401 bool minChanged = qAbs(newMinValue - oldMinValue) > (d->SingleStep * 0.000000001);
402 bool maxChanged = qAbs(newMaxValue - oldMaxValue) > (d->SingleStep * 0.000000001);
403 if (minChanged || maxChanged)
422 return d->SingleStep;
429 d->SingleStep = newStep;
433 d->updateMinOffset(d->MinValue);
434 d->updateMaxOffset(d->MaxValue);
436 double _minvalue = d->MinValue;
437 double _maxvalue = d->MaxValue;
453 return d->minFromInt(d->Slider->tickInterval());
460 d->Slider->setTickInterval(d->toInt(newTickInterval));
467 return d->Slider->hasTracking();
474 d->Slider->setTracking(enable);
481 d->Slider->triggerAction(action);
488 d->Slider->setOrientation(newOrientation);
495 return d->Slider->orientation();
502 return d->Slider->symmetricMoves();
509 d->Slider->setSymmetricMoves(symmetry);
516 double doubleNewValue = d->minFromInt(newValue);
517 if (d->MinValue == doubleNewValue)
521 d->MinValue = doubleNewValue;
530 double doubleNewValue = d->maxFromInt(newValue);
531 if (d->MaxValue == doubleNewValue)
535 d->MaxValue = doubleNewValue;
544 double doubleNewMinValue = d->minFromInt(newMinValue);
545 double doubleNewMaxValue = d->maxFromInt(newMaxValue);
547 bool emitMinValueChanged = (d->MinValue != doubleNewMinValue);
548 bool emitMaxValueChanged = (d->MaxValue != doubleNewMaxValue);
550 if (!emitMinValueChanged && !emitMaxValueChanged)
554 d->MinValue = doubleNewMinValue;
555 d->MaxValue = doubleNewMaxValue;
557 if (emitMinValueChanged)
561 if (emitMaxValueChanged)
592 if (!d->SettingRange)
594 this->
setRange(d->minFromInt(min), d->maxFromInt(max));
612 t_slider->
setValues(d->Slider->minimumValue(), d->Slider->maximumValue());
618 d->Slider = t_slider;