12 const int VuoSliderWithLabels::minimumHeight = 37;
13 const int VuoSliderWithLabels::extraVSpaceForTicks = 11;
40 minLabel =
new QLabel(
this);
43 maxLabel =
new QLabel(
this);
45 QStyleOptionSlider slider;
46 slider.initFrom(
this);
48 QFont labelFont = minLabel->font();
49 labelFont.setPointSize(9);
51 minLabel->setFont(labelFont);
54 maxLabel->setFont(labelFont);
61 for (map<int, QLabel *>::iterator i = intermediateLabels.begin(); i != intermediateLabels.end(); ++i)
64 int labelIndex = i->first;
65 QLabel *label = i->second;
66 if (labelIndex <= minimum() || labelIndex >= maximum())
69 QString placeholderText =
" ";
70 label->setText(placeholderText);
74 for (
int i = minimum()+1; i < maximum(); ++i)
76 if (intermediateLabels.find(i) == intermediateLabels.end())
77 intermediateLabels[i] =
new QLabel(
this);
79 intermediateLabels[i]->setFont(minLabel->font());
84 setTickPosition(displayTicks? QSlider::TicksBelow : QSlider::NoTicks);
85 setMinimumSize(QSize(0, VuoSliderWithLabels::minimumHeight + (displayTicks? extraVSpaceForTicks : 0)));
93 QStyleOptionSlider slider;
94 slider.initFrom(
this);
96 int sliderAvailableHorizontalSpace = style()->pixelMetric(QStyle::PM_SliderSpaceAvailable, &slider,
this);
97 int sliderLeft = QStyle::sliderPositionFromValue(minimum(), maximum(), minimum(), sliderAvailableHorizontalSpace);
98 int sliderRight = width();
100 int labelVerticalOffset = style()->pixelMetric(QStyle::PM_SliderThickness, &slider,
this) + (displayTicks? extraVSpaceForTicks : 0) + 10;
102 minLabel->move(QPoint(sliderLeft, labelVerticalOffset));
103 maxLabel->move(QPoint(min(sliderRight - maxLabel->sizeHint().width() + 6,
104 QStyle::sliderPositionFromValue(minimum(), maximum(), maximum(), sliderAvailableHorizontalSpace)),
105 labelVerticalOffset));
109 for (
int i = minimum()+tickInterval(); i < maximum(); ++i)
111 int labelHorizontalOffset = QStyle::sliderPositionFromValue(minimum(), maximum(), i, sliderAvailableHorizontalSpace);
112 intermediateLabels[i]->move(labelHorizontalOffset, labelVerticalOffset);
116 QSlider::paintEvent(e);
124 return labelTextForValue[value];
132 this->labelTextForValue[value] = text;
140 this->displayTicks = display;