在我的应用程序中,我添加了 pixmap 的 QGraphicsScene,所有内容都在 QGraphicsView 中查看,滚动条关闭。程序窗口比像素图小,当我按箭头键或移动鼠标滚轮时,像素图正在移动。
如何禁用它,即使像素图大于窗口,它也不会被键盘或鼠标移动,除非我为此使用我的事件?
(我试图将交互属性设置为 false,但没有奏效)
在我的应用程序中,我添加了 pixmap 的 QGraphicsScene,所有内容都在 QGraphicsView 中查看,滚动条关闭。程序窗口比像素图小,当我按箭头键或移动鼠标滚轮时,像素图正在移动。
如何禁用它,即使像素图大于窗口,它也不会被键盘或鼠标移动,除非我为此使用我的事件?
(我试图将交互属性设置为 false,但没有奏效)
我相信最简单的解决方案是将 QGraphicsView 的 FocusPolicy 设置为 NoFocus,然后在主窗口中处理所有关键事件。
ui->graphicsView->setFocusPolicy( Qt::NoFocus );
我认为简单的方法是使用QGraphicsView::setSceneRect()
设置视图允许可视化的区域。
如果您将视图设置为sceneRect()
视图小部件的实际大小(或稍微小一点),那么它将无法在此矩形之外滚动或平移。
我不知道是否有更简单的方法,但比较简单的方法是创建一个继承 QGraphicsView 类并覆盖鼠标和按键事件的类。
更难的方法是在小部件上安装事件过滤器。
在我看来,最难的蛮力解决方案是通过某种信号检测变化,并将其恢复为原来的样子。