根据QGraphicsView文档,dragMode的行为“仅影响任何项目未处理的鼠标点击”。然后它说“你可以通过创建QGraphicsView的子类来定义自定义行为。”
在我的情况下,我想点击一个接受鼠标点击的项目正常调用项目的鼠标点击。而且我不想点击这些项目来启动橡皮筋拖动(也正常)。但是,我希望能够按住Ctrl键单击视图,并启动橡皮筋拖动选择,而不是调用项目的鼠标事件方法。
我知道如何评估ctrl是否与鼠标点击事件相关联:
if (event->modifiers().testFlag(Qt::ControlModifier))
但是,我不知道如何处理这种情况,或者确切地说要做什么。我应该把它放在QGraphicsItem,QGraphicsScene或QGraphicsView中吗? QGraphicsView似乎最有可能,因为文档有点暗示。
答案 0 :(得分:2)
您需要将条件设置为QGraphicsItem,如下所示:
if (event->modifiers().testFlag(Qt::ControlModifier))
{event->setAccepted(false); return;}
现在您可以在QGraphicsView中处理该事件。