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

标签 qt qgraphicsview

根据 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/

相关文章:

qt - 如何确定是否在 QItemDelegate 的paint() 函数中选择了该项目?

C++ 指针/引用

c++ - QT 图形 View 在场景中查找项目

c++ - 在 Qt C++ 中处理鼠标事件

python - 获取 QPolygonF 的顶点

c++ - QTcpServer 在 QRunnable 中工作时没有收到任何数据

c++ - 在子尺寸更改后调整父窗口的大小

qt - 在设计模式下创建的 View 上的 QGraphicsView fitInView 不起作用

qt - 如何让Qt Graphics View Framework支持自定义图层

CSS calc() 在 wkhtmltopdf 0.12.4 中不起作用