Bonjour, voila le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void Graphique::paintEvent(QPaintEvent *event)
{
	QTableWidget::paintEvent(event);
 
	if (this->viewport())
	{
		QPainter painter(this->viewport());
 
 
		painter.drawLine(QCursor::pos().x(), rowViewportPosition(1), QCursor::pos().x(), rowViewportPosition(nombreEmploye - 1) + rowHeight(nombreEmploye - 1) - 1);
	}
 
	event->accept();
}
 
void Graphique::mouseMoveEvent(QMouseEvent *event)
{
	repaint();
}
J'ai activé "setMouseTracking(true);" dans mon constructeur.

Je travail sur un QTableWidget, mon but étant de créer "une réglette" : un trait vertical qui suit la souris.

Actuellement mon code trace un trait mais ne fait rien sauf si je clique ou que je joue avec les fenêtre ( via windows ). De plus quand je clique il ne se déplace que dans la ligne où j'ai cliqué, (le trait reste fixe dans les autres lignes).

Si quelqu'un voit pourquoi, je seche.

EDIT : Le trait se met à jour dans la case où je clique, car le clique trace le cadre de la "selection", et donc un paintEvent dans la region de la case (il retrace ainsi le trait que dans cette case).

Il faut donc croire que le repaint() ne fait pas son boulot?


EDIT 2 : la solution : remplacer repaint(); par viewport()->repaint();