0

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

4

2 回答 2

0

您需要从QGraphicsViewmouseMoveEvent实现该功能并接受该事件。

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

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

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

于 2013-08-02T16:23:07.857 回答
0

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

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

于 2018-01-30T17:45:23.203 回答