原文:http://beself.top/2020/02/14/qt-qgraphicsscene-delete-item/
管理QGraphicsScene中的Items其实不是很方便,本文操作的是删除QGraphicsScene中的Item
删除QGraphicsScene中选中的Items
- 要执行此操作首先需要在添加Item的时候设置Item为可被选中
- 中是获取选中的Item列表
- 循环删除Item列表中的Items
// 添加Item
qreal x = 20404614;
qreal y = 3918540;
QGraphicsEllipseItem* Ellipse = new QGraphicsEllipseItem;
Ellipse->setRect(x - XOffset, y - YOffset, 30, 30);
Ellipse->setPen(QColor(Qt::white));
Ellipse->setBrush(QBrush(QColor(Qt::red)));
// 设置可被选中
Ellipse->setFlags(QGraphicsItem::ItemIsSelectable);
Scene->addItem(Ellipse);
View->centerOn(x - XOffset, y - YOffset);
删除Item
QList<QGraphicsItem *> itemList = Scene->selectedItems();
for (auto i = 0; i < itemList.size(); i++) {
Scene->removeItem(itemList[i]);
delete itemList[i];
}
删除QGraphicsScene中任意的Item
- 删除QGraphicsScene中的item即需要知道item的座标
- 然后删除这个区域内的item即可
// 添加Item
qreal x = 20404614;
qreal y = 3918540;
QGraphicsEllipseItem* Ellipse = new QGraphicsEllipseItem;
Ellipse->setRect(x - XOffset, y - YOffset, 30, 30);
Ellipse->setPen(QColor(Qt::white));
Ellipse->setBrush(QBrush(QColor(Qt::red)));
Ellipse->setFlags(QGraphicsItem::ItemIsSelectable);
Scene->addItem(Ellipse);
View->centerOn(x - XOffset, y - YOffset);
删除Item
qreal x = 20404614;
qreal y = 3918540;
QRectF Rect(x - XOffset, y - YOffset, 5 , 5);
QList<QGraphicsItem *> itemList = Scene->items(Rect);
for (auto i = 0; i < itemList.size(); i++) {
Scene->removeItem(itemList[i]);
delete itemList[i];
}