Escribí una clase derivada de QGraphicsScene
. En un punto, necesito eliminar todos los elementos de la escena y quiero que los artículos se destruyan físicamente (llamada del destructor). He intentado lo siguiente:Cómo eliminar todo QGraphicsItem de 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 emite una advertencia: Advertencia: C4150: supresión del puntero al tipo incompleto 'QGraphicsItem'; no destructor llamado
No estoy seguro de por qué es eso. QGraphicsItem
tiene un destructor virtual por lo que los elementos se deben eliminar de la memoria.
Si este no es el camino correcto, ¿cómo puedo eliminar todos QGraphicsItem
s de QGraphicsScene
? Tenga en cuenta que sé que cuando se elimine la escena, todos los elementos también se eliminarán. Pero quiero eliminar elementos de la escena y dibujar otros elementos. Quiero que los elementos eliminados se eliminen de la memoria.