我有一个QGraphicsScene
,其中包含大量的QGraphicsPixmapItem
s,包含大型像素图。
作为测试,我在场景中添加了很多项目,以使我的程序使用数百MB的内存。
之后,我尝试删除它们,
ui->graphicsView->scene()->removeItem(item);
item->setPixmap(QPixmap());
清空pixmaps ui->graphicsView->scene()->clear();
以上所有内容,无论是单独使用还是一起使用,都会减少使用的内存量。
请注意,QGraphicsPixmapItem
本身不会被删除,它们会保留在容器中。但是,在对它们使用setPixmap()
之前,它们几乎不使用任何内存。
我做错了什么?
答案 0 :(得分:0)
试试:
foreach(QGraphicsItem *item, ui->graphicsView->scene()->items()) {
delete item;
}
或者,简单地说:
qDeletaAll( scene()->items() );
请注意,您无需以任何其他方式清除场景。 QGraphicsScene可以处理此问题,不会尝试显示已删除的项目。
clear()仅从场景中删除它,但不释放内存。