Господа, помогите плз!
В QSlider необходимо отображать его текущее значение над ползунком.
Как я вижу есть 2 способа:
1. Завести QLabel и двигать его по событию valueChanged(int)
2. Отрисовывать значение в paintEvent
Хотел бы разобраться со вторым случаем.
Делаю так
void paintEvent(QPaintEvent *event)
{
int position = QStyle::sliderPositionFromValue(minimum(),
maximum(),
value(),
width());
QDateTime dt;
dt.setTime_t(value());
QPainter painter(this);
QFontMetrics fm(painter.font());
painter.drawText(QRect(position, 0, fm.width(dt.toString("hh:mm:ss")), 20), dt.toString("hh:mm:ss"));
QSlider::paintEvent(event);
}
Получается примерно следующее
Пару проблем не могу решить.
1. Не понимаю как мне рисовать текущее значение, чтобы оно было чуточку выше ползунка (чтобы не перекрывалось)
2. Позиция (position) вычисляемая в коде не всегда в точности совпадает с позицией ползунка. Если ползунок в начале то position чуть левее ползунка.
Если же ползунок в конце, то position переползает правее ползунка
Спасибо