重新实现 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
的移动,要么为mouseMoveEvent
、mouseReleaseEvent
和mousePressEvent
调用super来继续处理QGraphicsScene
内部的事件。
【讨论】:
以上是关于重新实现 mousePressEvent 后无法在 QGraphicsView 中拖动项目的主要内容,如果未能解决你的问题,请参考以下文章
覆盖 mousePressEvent 后 Qt Widget 调整大小
如何在 PyQt 中为 Qt-Designer 小部件实现 MousePressEvent
MousePressEvent 在 QPushbutton 上不起作用
未调用 QGraphicsView 的 MousePressEvent