的QGraphicsView - 如何禁用鼠标和键盘滚动
-
06-09-2019 - |
题
在我的应用程序具有与QGraphicsScene像素映像并将所有与滚动条关闭观察中的QGraphicsView。 程序窗口是小的pixmap然后,当我按下箭头键或移动鼠标滚轮像素映像正在被移动。
我如何禁用所以即使像素图比窗口大它不会被键盘或鼠标,除非我用我的事件感动?
(我试过互动属性设置为false,但没有工作)
解决方案
相信最简单的解决方案将是的QGraphicsView的FocusPolicy设置为NoFocus,然后处理在主窗口中的所有关键事件。
ui->graphicsView->setFocusPolicy( Qt::NoFocus );
其他提示
我认为简单的方法是使用QGraphicsView::setSceneRect()
来设置该视图被允许以可视化的区域。
如果你设置视图的sceneRect()
到视图控件的实际大小(或只是略小),那么它将无法滚动或平移这个矩形之外。
我不知道是否有一个更简单的方法,但适度宽松的方式是使继承您的QGraphicsView类的类,并覆盖了鼠标和按键事件。
较硬的方式将涉及对插件安装一个事件过滤器。
在我看来,最难的蛮力解决办法是检测通过某种信号的变化,并将其设置回是怎么回事。
不隶属于 StackOverflow