26 #include <QHBoxLayout>
34 setSizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Preferred);
36 QHBoxLayout* box =
new QHBoxLayout(
this);
37 box->setContentsMargins(5, 0, 0, 0);
38 box->setAlignment(Qt::AlignLeft);
39 _label =
new QLabel(label);
40 box->addWidget(_label);
41 _display =
new QLabel;
42 _display->setMinimumWidth(15);
43 _slider =
new QSlider;
45 _resolution = resolution;
46 _decimal_places = display_decimal_places;
47 setValue(default_value);
48 box->addWidget(_slider);
49 connect(_slider, SIGNAL(valueChanged(
int)),
this, SLOT(updateDisplay(
int)));
51 _label->setBuddy(_slider);
52 box->addWidget(_display, 0, Qt::AlignRight);
55 QSize LabelSliderWidget::sizeHint()
const {
return QSize(250, 20); }
57 void LabelSliderWidget::setValue(
double value)
59 int act_value =
int(value * _resolution);
60 _slider->setValue(act_value);
61 updateDisplay(act_value);
64 void LabelSliderWidget::setMinMax(
double min,
double max)
68 _slider->setMinimum(
int(
min * _resolution));
69 _slider->setMaximum(
int(
max * _resolution));
72 void LabelSliderWidget::updateDisplay(
int value)
74 double double_val = (double)value / (
double)_resolution;
76 if (double_val < _min_dbl_value)
77 double_val = _min_dbl_value;
78 else if (double_val > _max_dbl_value)
79 double_val = _max_dbl_value;
81 _display->setText(QString::number(double_val,
'f', _decimal_places));
82 emit valueChanged(double_val);