根据 QGraphicsView 文档,dragMode 的行为“仅影响不受任何项目处理的鼠标单击”。然后它说“您可以通过创建 QGraphicsView 的子类来定义自定义行为。”
就我而言,我希望单击接受鼠标单击的项目来正常调用该项目的鼠标单击。我希望不要点击这些项目来启动橡皮筋拖动(也像平常一样)。但是,我希望能够按住 Ctrl 键单击 View ,并启动橡皮筋拖动选择,而不是调用项目的鼠标事件方法。
我知道如何评估 ctrl 是否与鼠标单击事件关联:
if (event->modifiers().testFlag(Qt::ControlModifier))
但是,我不知道如何处理这种情况,或者确切地把它放在哪里。我应该把它放在 QGraphicsItem、QGraphicsScene 或 QGraphicsView 中吗?正如文档所暗示的那样,QGraphicsView 似乎最有可能。
最佳答案
您需要将条件放入 QGraphicsItem,如下所示:
if (event->modifiers().testFlag(Qt::ControlModifier))
{event->setAccepted(false); return;}
现在您可以在 QGraphicsView 中处理该事件了。
关于Qt:如何在 QGraphicsView 中单击并拖动以橡皮筋选择接受鼠标单击的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9448224/