我有自己的QGraphicsScene
子类在QGrapnhicsView
后面(我没有覆盖它)。我的场景处理一些鼠标事件(双击和单击)。但同时我希望我的视图可以通过游标(QtGui.QGraphicsView.ScrollHandDrag
)滚动。如果视图图层已经导致滚动,我怎么能阻止鼠标事件?不要冒泡到场景?
答案 0 :(得分:0)
您需要实施QGraphicsView中的mouseMoveEvent
功能并接受该事件。
protected:
virtual void QGraphicsView::mouseMoveEvent(QMouseEvent * event)
{
QPoint mouseLocation = event->pos();
// Do stuff
event->accept();
}
接受鼠标事件prevents a parent class from handling that event。
这会阻止鼠标移动事件的传播。根据您的目的,您还可以重新实现mouseDoubleClickEvent
,mousePressEvent
,mouseReleasEvent
或wheelEvent
功能。它们的所有函数定义都在QGraphicsView文档中。
答案 1 :(得分:0)
根据Qt文档,您需要实际上为QGraphicsView
创建子类,并为新子类重新实现mouseMoveEvent()
方法。