如何在Qt QSlider上绘制图片而不是滑块?

时间:2009-12-17 06:11:12

标签: qt paint subclassing redraw qslider

我创建了一个继承自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 个答案:

答案 0 :(得分:4)

您可以将其添加到窗口小部件的paintEvent方法中。这允许您重绘窗口小部件的全部或部分。