Qt-删除QGraphicsScene中的Item

管理QGraphicsScene中的Items其实不是很方便,本文操作的是删除QGraphicsScene中的Item

删除QGraphicsScene中选中的Items

  1. 要执行此操作首先需要在添加Item的时候设置Item为可被选中
  2. 中是获取选中的Item列表
  3. 循环删除Item列表中的Items

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 添加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

  1. 删除QGraphicsScene中的item即需要知道item的坐标
  2. 然后删除这个区域内的item即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 添加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];
    }

发表评论

电子邮件地址不会被公开。 必填项已用*标注