Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[QT] Obsługa zdarzenia ruchu myszy dla obiektu QGraphicsScene - Problem ze skakaniem obrazu

Ostatnio zmodyfikowano 2019-12-09 20:09
Autor Wiadomość
dlakin95
Temat założony przez niniejszego użytkownika
[QT] Obsługa zdarzenia ruchu myszy dla obiektu QGraphicsScene - Problem ze skakaniem obrazu
» 2019-12-09 20:09:33
Cześć.

Napisałem prosty kod w QT do przechwytywania zdarzenia ruchu myszy, by przemieścić scenę z pomocą myszy.

C/C++
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
P-175758
« 1 »
  Strona 1 z 1