I think you'd have fewer problems with a painter approach. All the rendering problems (transformations, etc.) would vanish and getting cursor coordinates would be as easy as reading a variable from the mouse event.
The most basic way to implement the viewer would be to use a QLabel with a pixmap. You can also embed it into a scroll area if you want scroll bars. Of course you can draw the image yourself using QPainter if you want more control over it (like easy scaling, etc.).
Bookmarks