我在QGrapnhicsView后面有自己的QGraphicsScene子类(我没有覆盖它)。我的场景处理一些鼠标事件(双击和单击)。但同时,我希望我的视图可以通过光标滚动(QtGui.QGraphicsView.ScrollHandDrag)。如果鼠标事件已经导致滚动,我如何阻止视图层上的鼠标事件,而不是冒泡到场景?
发布于 2013-08-03 00:23:08
您需要从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文档中。
发布于 2018-01-31 01:45:23
根据Qt文档,您实际上需要对QGraphicsView进行子类化,并为新的子类重新实现mouseMoveEvent()方法。
参考: http://doc.qt.io/qt-5/qgraphicsview.html#dragMode-prop
https://stackoverflow.com/questions/18021742
复制相似问题