Witam.
Żeby nie komplikować.
Mam stworzony obiekt Scena dziedziczący po QGraphicsView do niego został dodany obiekt QGraphicsScene wraz z innymi obiektami dziedziczącymi po QGraphicsItem (dość typowo), czyli tło typu *.png ,a na nim inne różne narysowane obiekty . Całość została umieszczona QMainWindow w jakimś QGroupBox. Zazwyczaj obraz jest na tyle duży, że automatycznie pojawiają się scrollbar-y i tak ma być.
Pytanie brzmi, jak zaimplementować funkcję, która pozwoli po naciśnięciu myszą na obiekt QGraphicsView przesuwanie jego zawartości ? Czyli takie złapanie obrazu i przesunięcie na wybrany obszar, który było dotychczas niewidoczny ? Chcę osiągnąć taki sam efekt jak przy przeglądaniu np mapy w mapsGoogle :)
Doszedłem do tego
void Scena::mousePressEvent(QMouseEvent *e)
{
offset = e->pos();
}
void Scena::mouseMoveEvent(QMouseEvent *e)
{
this->move(mapToParent(e->pos() - offset));
arena->update();
}
Tyle, że przesuwając myszą nie pokazuje mi się zawartość obrazu, za obszaru scrollbar jak chcę, a przesuwam całym obrazem razem ze scrolami. Myślę, że tutaj chodzi o to, aby właściwie mapować rodzica, a w tym wypadku rodzicem jest QGroupBox, więc to w stosunku do niego przesuwa się chyba cały obraz.