Qt QGraphicscene:例如,如何防止键盘事件在拖动项目时到达主窗口?

Qt QGraphicscene:例如,如何防止键盘事件在拖动项目时到达主窗口?,qt,qgraphicsscene,Qt,Qgraphicsscene,我正在使用Qt的qgraphicscene和几个QGraphicsItem的自定义子类实现一个基本的图形绘制工具。现在有几种情况我不希望执行任何“全局”操作: 例如,在拖动项目时,不应允许用户创建新文件或撤消上一个操作(例如按Ctrl-Z),因为这将导致几个问题,必须单独处理(如果用户当前正在两个节点之间绘制边,如果他按下Ctrl-Z键,最后录制的动作是创建第一个节点,会发生什么情况?) 我注意到一些商业应用程序,如Microsoft Word和Adobe Photoshop,在处于这种“中间”

我正在使用Qt的
qgraphicscene
和几个
QGraphicsItem
的自定义子类实现一个基本的图形绘制工具。现在有几种情况我不希望执行任何“全局”操作:

例如,在拖动项目时,不应允许用户创建新文件或撤消上一个操作(例如按Ctrl-Z),因为这将导致几个问题,必须单独处理(如果用户当前正在两个节点之间绘制边,如果他按下Ctrl-Z键,最后录制的动作是创建第一个节点,会发生什么情况?)

我注意到一些商业应用程序,如Microsoft Word和Adobe Photoshop,在处于这种“中间”状态时似乎忽略了任何常用的键盘快捷键。此外,当将项目拖出视口时,这些工具会显示一个“禁止”光标,并且不允许任何鼠标按下事件到达外部窗口(例如,在工具栏上单击鼠标右键)

在使用
qgraphicscene
时,我应该如何实现这一点?我已经尝试添加以下覆盖:

void MyGraphicsScene::keyPressEvent(QKeyEvent* keyEvent)
{
    keyEvent->accept();
}
但任何按下的键都会被传送到主窗口。除此之外,我不确定仅仅过滤键盘事件是否足够安全,因为可能还有其他输入事件会触发禁止的操作

对于这个问题,有没有什么通用的方法可以在我的软件中使用