On Thursday, 29 November 2012 12:33:58 CEST, Volker Poplawski wrote: > while (not m_items.isEmpty()) > { > QGraphicsItem *item = m_items.takeFirst(); > m_scene->removeItem(item); // qtdoc says it's faster to > remove item first then delete > delete item; > }
When you call removeItem, its children are removed from the scene as well; when you delete it, these children will be deleted immediately, too. Are you sure that none of the items in your m_items is a child of any item present earlier in that list? Have you tried to run your program under valgrind? And as a style suggestion, it might be better to rework the loop like this: Q_FOREACH(QGraphicsItem *item, m_items) { m_scene->removeItem(item); delete item; } m_items.clear(); QList very likely doesn't have much overhead even when used in this way, but it feels wrong to keep deleting a first item from a container which is not a linked list. > The interesting things is that without the removeItem() call, > i.e. just calling delete on the items, my program does not > crash. This is interesting. Cheers, Jan _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest