原文: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];
}