阻止QGraphicsView的某些鼠标事件



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

您需要从QGraphicsView实现mouseMoveEvent函数并接受事件。

protected:
virtual void QGraphicsView::mouseMoveEvent(QMouseEvent * event)
{
    QPoint mouseLocation = event->pos();
    // Do stuff
    event->accept();
}

接受鼠标事件会阻止父类处理该事件。

这将阻止鼠标移动事件的传播。根据您想要执行的操作,您还可以重新实现mouseDoubleClickEventmousePressEventmouseReleasEventwheelEvent函数。它们的所有函数定义都在QGraphicsView文档中。

根据Qt文档,您需要实际对QGraphicsView进行子类化,并为新的子类重新实现mouseMoveEvent()方法。

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

相关内容

  • 没有找到相关文章

最新更新