QGraphicsView - 如何禁用鼠标和键盘滚动

问题描述:

在我的应用程序中,我添加了Qmap并添加了QGraphicsScene,并且所有QGraphicsView都在滚动条关闭的情况下查看。 程序窗口小于像素图,当我按下方向键或移动鼠标滚轮时,像素图正在移动。QGraphicsView - 如何禁用鼠标和键盘滚动

我该如何禁用,即使像素大于窗口,它不会被键盘或鼠标移动,除非我使用我的事件呢?

(我试过互动属性设置为false,但没有工作)

我相信最简单的解决方案是将QGraphicsView的FocusPolicy设置为NoFocus,然后处理主窗口中的所有关键事件。

我不知道是否有一个更简单的方法,但适度宽松的方式是使继承您的QGraphicsView类类,并覆盖鼠标和按键事件。

更难的方法是在窗口小部件上安装事件过滤器。

在我看来,最难的蛮力解决方案是通过某种信号检测变化,并将其重新设置为原来的状态。

我认为最简单的方法是使用QGraphicsView::setSceneRect()来设置允许视图可视化的区域。

如果您将视图的sceneRect()设置为视图窗口小部件的实际大小(或稍微小一些),那么它将无法滚动或平移到此矩形的外部。