阻止QGraphicsView的一些鼠标事件

时间:2013-08-02 16:19:21

标签: qt pyside qgraphicsview

我有自己的QGraphicsScene子类在QGrapnhicsView后面(我没有覆盖它)。我的场景处理一些鼠标事件(双击和单击)。但同时我希望我的视图可以通过游标(QtGui.QGraphicsView.ScrollHandDrag)滚动。如果视图图层已经导致滚动,我怎么能阻止鼠标事件?不要冒泡到场景?

2 个答案:

答案 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

这会阻止鼠标移动事件的传播。根据您的目的,您还可以重新实现mouseDoubleClickEventmousePressEventmouseReleasEventwheelEvent功能。它们的所有函数定义都在QGraphicsView文档中。

答案 1 :(得分:0)

根据Qt文档,您需要实际上为QGraphicsView创建子类,并为新子类重新实现mouseMoveEvent()方法。

参考: http://doc.qt.io/qt-5/qgraphicsview.html#dragMode-prop