【发布时间】:2011-11-17 20:48:56
【问题描述】:
我从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 中删除所有QGraphicsItems?请注意,我知道当场景被删除时,所有项目也将被删除。但我想从场景中删除项目并绘制其他项目。我希望从内存中删除已删除的项目。
【问题讨论】:
标签: c++ qt incomplete-type