问:如何在QGraphicsView中单击并拖动橡皮筋选择接受鼠标点击的项目?

时间:2012-02-25 21:27:09

标签: qt qgraphicsview

根据QGraphicsView文档,dragMode的行为“仅影响任何项目未处理的鼠标点击”。然后它说“你可以通过创建QGraphicsView的子类来定义自定义行为。”

在我的情况下,我想点击一个接受鼠标点击的项目正常调用项目的鼠标点击。而且我不想点击这些项目来启动橡皮筋拖动(也正常)。但是,我希望能够按住Ctrl键单击视图,并启动橡皮筋拖动选择,而不是调用项目的鼠标事件方法。

我知道如何评估ctrl是否与鼠标点击事件相关联:

if (event->modifiers().testFlag(Qt::ControlModifier))

但是,我不知道如何处理这种情况,或者确切地说要做什么。我应该把它放在QGraphicsItem,QGraphicsScene或QGraphicsView中吗? QGraphicsView似乎最有可能,因为文档有点暗示。

1 个答案:

答案 0 :(得分:2)

您需要将条件设置为QGraphicsItem,如下所示:

if (event->modifiers().testFlag(Qt::ControlModifier))
{event->setAccepted(false); return;}

现在您可以在QGraphicsView中处理该事件。