Domanda

Ho creato una classe che eredita da Qslider. Voglio disegnare una foto sul cursore (Grabber) invece di mostrare quella semplice. Come farlo?

--

Ho trovato una risposta e pubblicato dopo aver ricevuto la risposta. Con il dovuto rispetto per il risponditore, sceglierò quella risposta. Tuttavia, vorrei condividere il codice in modo che chiunque abbia lo stesso problema possa beneficiare:

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);
}
È stato utile?

Soluzione

Puoi farlo nel Paintevent metodo del widget. Ciò consente di ridisegnare tutto o solo una parte del widget.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top