Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

QGraphicsView - how to disable mouse and keyboard scrolling

In my application I have QGraphicsScene with pixmap added and all is viewed in QGraphicsView with scrollbars off. The program window is smaller then pixmap and when I press arrow keys or move mouse wheel the pixmap is being moved.

How do I disable that so even if the pixmap is bigger than window it won't be moved by keyboard or mouse unless I use my events for that?

(I tried to set interactive property to false but that didn't work)

like image 261
Mahtar Avatar asked Dec 29 '22 23:12

Mahtar


2 Answers

I believe the easiest solution would be to set FocusPolicy of QGraphicsView to NoFocus and then process all key events in main window.

ui->graphicsView->setFocusPolicy( Qt::NoFocus );
like image 167
Mahtar Avatar answered Mar 03 '23 08:03

Mahtar


I think the easy way is to use QGraphicsView::setSceneRect() to set the area that the view is allowed to visualize.

If you set the view's sceneRect() to the actual size of the view widget (or just slightly smaller), then it won't be able to scroll or pan outside of this rectangle.

like image 30
Mark Boots Avatar answered Mar 03 '23 10:03

Mark Boots