[QT] Obsługa zdarzenia ruchu myszy dla obiektu QGraphicsScene - Problem ze skakaniem obrazu
Cześć.
Napisałem prosty kod w QT do przechwytywania zdarzenia ruchu myszy, by przemieścić scenę z pomocą myszy.
case QEvent::GraphicsSceneMouseMove:
{
QGraphicsSceneMouseEvent * event = static_cast < QGraphicsSceneMouseEvent *>( ev );
QPointF delta = event->lastScenePos() - event->scenePos();
QRectF rect = sceneRect();
rect.translate( delta );
setSceneRect( rect );
}
break;
[/i]
Problemem jest niestety to, że obraz czasem przesuwa się płynnie, a czasem mam następujące po sobie skoki o podobne wartości jednostek.
Pos
QPointF(-222.082,-509.966)
Last Pos
QPointF(-320.785,-625.12)
Pos
QPointF(-312.56,-625.12)
Last Pos
QPointF(-222.082,-509.966)
Pos
QPointF(-222.082,-518.192)
Last Pos
QPointF(-312.56,-625.12)
Pos
QPointF(-304.335,-625.12)
Last Pos
QPointF(-222.082,-518.192)
Jak widać wartość współrzędnej dla zmiennej Pos zmienia się: -509 -> -625 -> -518 -> -625.
Dla jasności: Sprawdzałem i nigdzie poza tym miejscem i oczywiście konstruktorem nie zmieniam sceny. Wartość 625 jest stała, ale tylko dla tej chwili. Wcześniej przyjmowała inne wartości.
Wszystkie flagi są domyślne, więc nie ma mowy o obsłudze myszy przez QT. Nawet jak w kodzie dopisze return true.
Wiem też o możliwości obsługi myszy przez ustawienie odpowiedniej flagi, ale potrzebuję obsługi takiej jak InkScape. Czyli będę zmieniał rozmiar sceny przy oddalaniu od głównych obiektów i sterował widokiem.
Z góry dzięki za pomoc.
EDIT.
Rozwiązałem problem.
Jeżeli przesuwałem scenę, to kolejny punkt był podawany dla nowej sceny, a poprzedni dla poprzedniej. Co oznaczało zmianę delty na przeciwną i ze zwiększoną wartością.
By temu zapobiec przesuwam również punkt