Как нарисовать картинку вместо слайдера на Qt QSlider? - PullRequest
3 голосов
/ 17 декабря 2009

Я создал класс, который наследуется от QSlider. Я хочу нарисовать картинку на слайдере (граббер) вместо того, чтобы показывать простую. Как это сделать?

-

Я нашел ответ и написал после того, как получил ответ. С должным уважением к ответчику, я выберу этот ответ. Тем не менее, я хотел бы поделиться кодом, чтобы кто-то с той же проблемой мог получить выгоду:

void InheritedSlider::paintEvent(QPaintEvent *event)
{
    // uncomment to draw the parent first. Comment out to just ignore it.
    //QSlider::paintEvent(event);

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);

    //painter.translate(width() / 2, height() / 2);
    //painter.scale(100 / 200.0, 100 / 200.0);

    QPainterPath volPath;
    volPath.moveTo(60.0, 40.0);
    volPath.arcTo(20.0, 20.0, 40.0, 40.0, 0.0, 360.0);
    volPath.moveTo(40.0, 40.0);
    volPath.lineTo(40.0, 80.0);
    volPath.lineTo(80.0, 80.0);
    volPath.lineTo(80.0, 40.0);
    volPath.closeSubpath();
    painter.drawPath(volPath);
}

1 Ответ

4 голосов
/ 17 декабря 2009

Вы можете сделать это в методе paintEvent виджета. Это позволяет перерисовывать все или только часть виджета.

...