QGraphicsScene上为什么是禁止的符号
时间: 2024-03-04 14:49:00 浏览: 9
在 `QGraphicsScene` 中,出现禁止符号通常是因为设置了 `QGraphicsItem` 的 `ItemIsSelectable` 和 `ItemIsMovable` 属性,导致鼠标事件被 `QGraphicsItem` 截获,而无法传递到 `QGraphicsScene` 中。
解决这个问题的方法通常有两种:
1. 通过设置 `QGraphicsItem` 的 `ItemIsSelectable` 和 `ItemIsMovable` 属性为 `false`。这样可以避免鼠标事件被 `QGraphicsItem` 截获,从而传递到 `QGraphicsScene` 中。例如:
```
myItem->setFlag(QGraphicsItem::ItemIsSelectable, false); // 禁止选择
myItem->setFlag(QGraphicsItem::ItemIsMovable, false); // 禁止移动
```
2. 通过在 `QGraphicsScene` 中捕获鼠标事件,并将其传递给 `QGraphicsItem`。这种方法需要在 `QGraphicsScene` 中重新实现鼠标事件函数,并在其中手动传递事件给 `QGraphicsItem`。例如:
```
void MyGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
QGraphicsScene::mousePressEvent(event); // 首先调用基类的鼠标事件函数
// 将事件传递给选中的图形项
QList<QGraphicsItem *> itemList = selectedItems();
foreach (QGraphicsItem *item, itemList) {
item->mousePressEvent(event);
}
}
```
这样可以保证鼠标事件被正确地传递到 `QGraphicsItem` 中,从而避免出现禁止符号。