当QGraphicsScene鼠标松开事件响应完成后自动调用QGraphicsItem鼠标松开事件C++
时间: 2023-07-11 16:04:07 浏览: 72
在QGraphicsScene的mouseReleaseEvent函数中,可以通过调用items()函数获取所有在该事件发生位置下的QGraphicsItem,然后遍历这些QGraphicsItem,调用它们的mouseReleaseEvent函数。示例如下:
```cpp
void MyGraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
QGraphicsScene::mouseReleaseEvent(event);
QList<QGraphicsItem*> items = items(event->scenePos());
foreach(QGraphicsItem* item, items){
item->mouseReleaseEvent(event);
}
}
```
需要注意的是,如果QGraphicsItem的flags()函数返回的结果不包含QGraphicsItem::ItemIsSelectable标志位,则该QGraphicsItem不会接收到鼠标事件。如果需要让该QGraphicsItem接收鼠标事件,可以在构造函数中设置flags()函数的返回值,例如:
```cpp
MyGraphicsItem::MyGraphicsItem()
{
setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable);
}
void MyGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
qDebug() << "MyGraphicsItem mouse released!";
}
```
阅读全文