2009-12-17 4 views
3

J'ai créé une classe qui hérite de QSlider. Je veux dessiner une image sur le curseur (grabber) au lieu de montrer le plain. Comment faire?Comment dessiner une image au lieu du curseur sur Qt QSlider?

-

J'ai trouvé une réponse et affiché après avoir reçu la réponse. Avec tout le respect que je dois au répondant, je vais choisir cette réponse. Cependant, je voudrais partager le code afin que toute personne avec le même problème peut bénéficier:

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

Répondre

4

Vous pouvez le faire dans la méthode paintEvent du widget. Cela vous permet de redessiner tout ou seulement une partie du widget.

+0

+! Merci, c'est ce que j'ai fait :) – Viet

Questions connexes