QGraphicsItem执行鼠标事件完后让QGraphicsView继续执行鼠标事件 C++
时间: 2023-09-15 07:16:46 浏览: 168
Qt 基于QGraphicsItem类重载鼠标事件函数的教训
5星 · 资源好评率100%
在 Qt 中,可以通过在 QGraphicsItem 上实现 mousePressEvent()、mouseMoveEvent() 和 mouseReleaseEvent() 等函数来处理鼠标事件。如果在 QGraphicsItem 上处理了鼠标事件,那么 QGraphicsView 将不会再收到这些事件。但有时候我们需要在 QGraphicsItem 处理完鼠标事件后,让 QGraphicsView 继续处理这些事件,可以使用 QGraphicsItem::ignore() 函数来实现。
具体来说,当 QGraphicsItem 上的 mousePressEvent() 函数被调用时,可以在函数最后添加一行代码:
```cpp
void MyGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
// 处理鼠标事件
// ...
// 忽略鼠标事件,让 QGraphicsView 继续处理
QGraphicsItem::mousePressEvent(event);
}
```
这样,当 QGraphicsItem 处理完鼠标事件后,会调用 QGraphicsView 的 mousePressEvent() 函数来处理这些事件。同样的,也可以在 mouseMoveEvent() 和 mouseReleaseEvent() 函数中实现类似的逻辑。
阅读全文