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

时间:2009-05-29 13:23:32

标签: qt qgraphicsview

在我的应用程序中,我添加了带有pixmap的QGraphicsScene,所有内容都在QGraphicsView中查看并关闭了滚动条。 程序窗口比pixmap小,当我按下箭头键或移动鼠标滚轮时,pixmap正在移动。

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

(我尝试将交互式属性设置为false但不起作用)

3 个答案:

答案 0 :(得分:6)

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

ui->graphicsView->setFocusPolicy( Qt::NoFocus );

答案 1 :(得分:4)

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

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

答案 2 :(得分:0)

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

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

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