Wie zeichne ich ein Bild anstelle des Schiebers auf Qt Qslider?
-
20-09-2019 - |
Frage
Ich habe eine Klasse erstellt, die von Qslider erbt. Ich möchte ein Bild auf den Schieberegler (Grabber) zeichnen, anstatt die einfache zu zeigen. Wie es geht?
--
Ich fand eine Antwort und postete, nachdem ich die Antwort erhalten hatte. Mit gebührender Respekt vor dem Responder werde ich diese Antwort wählen. Ich möchte jedoch Code weitergeben, damit jeder mit demselben Problem davon profitieren kann:
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);
}
Lösung
Sie können es in das tun MALETEVENT Methode des Widgets. Auf diese Weise können Sie alle oder nur einen Teil des Widgets neu zeichnen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow