qt - 如何在Qt QSlider上绘制图片而不是 slider ?

标签 qt paint subclassing redraw qslider

我创建了一个继承自 QSlider 的类。我想在 slider (抓取器)上绘制图片而不是显示普通图片。怎么做?

--

我找到了答案并在收到回复后发布。出于对回复者的尊重,我会选择那个回复。但是,我想共享代码,以便遇到相同问题的任何人都可以受益:

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);
}

最佳答案

你可以把它写进paintEvent小部件的方法。这允许您重新绘制全部或仅部分小部件。

关于qt - 如何在Qt QSlider上绘制图片而不是 slider ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1919794/

相关文章:

c++ - 在 GNU Radio QT Time Sink 中显示过去的数据

java - 鼠标控制形状绘制

面向对象。选择对象

Qt QFont Kerning - 不影响/字距调整字体

c - 尝试编译 valkyrie(valgrind 的 GUI) 并抛出错误 :

c++ - C++/Qt 的 MultiOS "Jet Database"?

java - 为什么在 Java SWT Selection 监听器中新创建的元素无法显示/触发绘制事件?

Android - 在 Android Pie (API 28) RadialGradient 中绘制矩形而不是圆形

forms - 如何在不改变父级的情况下从子级中删除继承的对象

c++ - (Re)named std::pair 成员中断初始化