我有我自己的子类QGraphicsScene
谎言QGrapnhicsView
(我没有覆盖它)。我的场景处理一些鼠标事件(双击和单击)。但同时我希望我的视图可以通过光标(QtGui.QGraphicsView.ScrollHandDrag
)滚动。如果它已经导致滚动,我怎么能阻止视图层上的鼠标事件,而不是冒泡到场景中?
问问题
1066 次
2 回答
0
您需要从QGraphicsViewmouseMoveEvent
实现该功能并接受该事件。
protected:
virtual void QGraphicsView::mouseMoveEvent(QMouseEvent * event)
{
QPoint mouseLocation = event->pos();
// Do stuff
event->accept();
}
接受鼠标事件会阻止父类处理该事件。
这将防止鼠标移动事件被传播。根据您想要执行的操作,您还可以重新实现mouseDoubleClickEvent
、mousePressEvent
、mouseReleasEvent
或wheelEvent
函数。他们所有的函数定义都在QGraphicsView文档中。
于 2013-08-02T16:23:07.857 回答
0
根据 Qt 文档,您需要实际子类化QGraphicsView
并重新实现mouseMoveEvent()
新子类的方法。
于 2018-01-30T17:45:23.203 回答