Ho scritto una classe derivata da QGraphicsScene
. A un certo punto ho bisogno di rimuovere tutti gli oggetti dalla scena e voglio che gli oggetti siano fisicamente distrutti (chiamato distruttore). Ho provato la seguente:Come eliminare tutto QGraphicsItem da 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 emette un avviso: avviso: C4150: soppressione del puntatore al tipo incompleto 'QGraphicsItem'; nessun distruttore chiamato
Non sono sicuro del perché. QGraphicsItem
dispone di distruttore virtuale per cui gli elementi devono essere eliminati dalla memoria.
Se questo non è il modo giusto, come posso cancellare tutti i QGraphicsItem
s da QGraphicsScene
? Si noti che so quando la scena viene cancellata, tutti gli elementi verranno eliminati. Ma voglio rimuovere gli oggetti dalla scena e disegnare altri oggetti. Voglio che gli elementi rimossi vengano cancellati dalla memoria.