Come disegnare un'immagine invece del cursore su Qt Qslider?
-
20-09-2019 - |
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);
}
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