QT QGraphicsScene、QGraphicsItem、QGraphicsProxyWidget、QWidget间的事件传递
在项目开发中由于没有能够深刻理解QT QgraphicsScene场景中的事件传递的原理,导致浪费了两天时间。下面就将这两天对QT时间QT QgraphicsScene场景中的事件传递的理解分享一下。
QGraphicsScene为自定义画图场景,通过addItem()可以将自定义item放入scene场景,也可以通过QGraphicsProxyWidget代理类将QWidget封装为item中,由于图形场景层次叠加,势必导致鼠标事件被劫持。因此本位详细说明不同鼠标事件在不同层次间的传递方法。
鼠标单击事件:
void QGraphicsProxyWidget::mousePressEvent(QGraphicsSceneMouseEvent *event); 声明1
如果QWidget想接收鼠标点击事件,在鼠标点击事件中增加事件传递函数
QGraphicsProxyWidget::mousePressEvent(event); 函数1