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);
}
War es hilfreich?

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
scroll top