아래 코드를 사용하여 장면 바깥 쪽을 떠난 후에 항목을 제거 할 수 있다고 생각했지만 그렇지 않습니다. 다른 구현을 시도한 후에 다른 접근법을 시도해야한다고 생각합니다. 일부 QGraphicsItems는 실제로 boundingRect 외부에서 시작하므로 특정 좌표 점을 통과 한 후 GraphicsItems를 제거하고 삭제하는 방법이 있는지 궁금합니다.boundingRect를 종료 한 후 QGraphicsitems를 제거하는 방법
void Scene::advance()
{
QList <QGraphicsItem *> itemsToRemove;
foreach(QGraphicsItem * item, this->items())
{
if(!this->sceneRect().intersects(item->boundingRect()))
{
// The item is no longer in the scene rect, get ready to delete it
itemsToRemove.append(item);
}
}
foreach(QGraphicsItem * item, itemsToRemove)
{
this->removeItem(item);
delete(item);
}
QGraphicsScene::advance();
}