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

时间:2015-10-17 14:42:48

标签: qt qgraphicsscene

我使用Qt的QGraphicsScene和几个QGraphicsItem的自定义子类实现了一个基本的形状绘制工具。现在有几种情况我不想要任何"全球"要执行的行动:

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

我注意到像Microsoft Word和Adobe Photoshop这样的几个商业应用程序似乎忽略了任何常见的键盘快捷键,而在这样的"中间"州。此外,当将项目拖出视口时,这些工具会显示“禁止”#34;光标,不允许任何鼠标按下事件到达外窗口(例如,右键单击工具栏)。

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

void MyGraphicsScene::keyPressEvent(QKeyEvent* keyEvent)
{
    keyEvent->accept();
}

但是任何按下的键仍然会传递到主窗口。除此之外,我不确定过滤键盘事件是否足够安全,因为可能有其他输入事件可能触发禁止的操作。

我可以在我的软件中使用这个问题的通用方法吗?

0 个答案:

没有答案
相关问题