The way I'd think about how to organize your functions, is to think about what difference between the QGraphicsScene and the QGraphicsView. The QGraphicsScene contains the actual canvas that you are drawing. In your case it would be the map of the world and the other graphical items. The QGraphicsView is like the window into your scene, so with this thinking Zooming and Panning would be handled in the View.
As for printing/saving, as ecanela said, they can be handled in either the scene or the view. However, if you handle it in the view remember that unless you add special code, it will only print/save what is currently being viewed in the View. If you handle printing/saving in the scene, then the entire scene will be printed/saved.
For mouse interactions, you can override the mouseMoveEvent, mousePressEvent and mouseReleaseEvent in either the QGraphicsView or QGraphicsScene. Depending on what you're doing it might be easier and better organized if you can handle it in the widgets/items that you are drawing.
Lastly, if you are just doing simple zoom in/out, try using QGraphicsView::scale. This way, you won't need to worry about playing with the transformation matrix.
Good Luck!
Bookmarks