Bonjour à tous,

Je vais droit au but : comment faire pour redessiner le widget lorsque la souris est déplacée dessus ?

Voici les déclarations :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
class MonWidget {
protected:
   void paintEvent (QPaintEvent* e);
   void mouseMoveEvent (QMouseEvent* e);
 
   QPainter* painter;
   QPoint* lastMousePos;
};
Et les implémentations :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
void MonWidget::paintEvent (QPaintEvent*) {
   painter = new QPainter(this);
   // dessin du widget ...
   delete painter;
}
 
void MonWidget::mouseMoveEvent (QMouseMoveEvent* e) {
   lastMousePos = e->pos();
   paintEvent(0); // Je pense que l'erreur viens d'ici ...
}
J'ai essayé de remplacer paintEvent(0); par l'opération de dessin directement ce qui ne marche pas non plus. Le mouse-tracking est activé (dans le constructeur).

En somme, le seul moyen d'afficher la dernière position (lastMousePos) de la souris, est de redimensionner le widget après, pour que Qt déclenche le paintEvent seul.

Avez-vous des idées ?
Merci

Kwakanar