我已经从 QGraphicsScene
编写了一个派生类。有时我需要从场景中移除所有项目,并且我希望这些项目被物理销毁(调用析构函数)。我尝试了以下方法:
QList<QGraphicsItem*> all = items();
for (int i = 0; i < all.size(); i++)
{
QGraphicsItem *gi = all[i];
removeItem(gi);
delete gi; // warning at this line
}
Qt Creator 发出警告:警告:C4150:删除指向不完整类型“QGraphicsItem”的指针;没有调用析构函数
我不确定这是为什么。 QGraphicsItem
具有虚拟析构函数,因此应从内存中删除项目。
如果这不是正确的方法,我如何从 QGraphicsScene
中删除所有 QGraphicsItem
?请注意,我知道删除场景时,所有项目也将被删除。但我想从场景中删除项目并绘制其他项目。我希望删除的项目从内存中删除。
最佳答案
您可以使用 QGraphicsScene::clear() 移除和删除所有项目.
关于c++ - 如何从 QGraphicsScene 中删除所有 QGraphicsItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7431084/