重新实现 mousePressEvent 后无法在 QGraphicsView 中拖动项目

Posted

技术标签:

【中文标题】重新实现 mousePressEvent 后无法在 QGraphicsView 中拖动项目【英文标题】:Unable to drag items in QGraphicsView after reimplementing mousePressEvent 【发布时间】:2017-08-10 14:06:33 【问题描述】:

情况如下: 我有 QGraphicsView、QGraphicsScene 和 QGraphicsItem。 当我不实现鼠标事件时,我可以拖动项目。 但是当我在 QGraphicsView 中实现时

class MyView: public QGraphicsView 
...
protected:
    void mouseMoveEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);
    void mousePressEvent(QMouseEvent *event);
...

我不能再拖动项目了。

我应该以某种方式为 QGraphicsItem 实现鼠标事件并从 QGraphicsView 转换它们吗?

目前,在 QGraphicsItem 中我没有这些方法并使用默认值。 谢谢你。

【问题讨论】:

你要么自己实现QGraphicsItem的移动,要么为mouseMoveEvent、mouseReleaseEvent和mousePressEvent调用super继续处理QGraphicsScene内部的事件。 丹尼尔,谢谢。调用 super mouseMoveEvent 完美运行。您能否将其概述为答案,以便我标记它? 【参考方案1】:

你要么自己实现QGraphicsItem的移动,要么为mouseMoveEventmouseReleaseEventmousePressEvent调用super来继续处理QGraphicsScene内部的事件。

【讨论】:

以上是关于重新实现 mousePressEvent 后无法在 QGraphicsView 中拖动项目的主要内容,如果未能解决你的问题,请参考以下文章

覆盖 mousePressEvent 后 Qt Widget 调整大小

如何在 PyQt 中为 Qt-Designer 小部件实现 MousePressEvent

MousePressEvent 在 QPushbutton 上不起作用

未调用 QGraphicsView 的 MousePressEvent

如何在类中实现mousePressEvent(QMouseEvent * event)?

Qt 的事件