QGraphicsItem is a QObject. To delete Objects with 'delete' is a risky game. Better use deleteLater().
Guido On Thu, Nov 29, 2012 at 12:33:58PM +0100, Volker Poplawski wrote: > Hi everybody, > > I'm facing segfault in succession of deleting a number of > QGraphicsItems from a scene. > > The following code leads to the stack trace below on the next redraw > of the scene. > > 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; } > > > The interesting things is that without the removeItem() call, i.e. > just calling delete on the items, my program does not crash. > > > > > > > 0 > QGraphicsSceneFindItemBspTreeVisitor::visit(QList<QGraphicsItem*>*) > 0x1075cff 1 > QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, > QRectF const&, int) const 0x1074c40 2 > QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, > QRectF const&, int) const 0x1074ce0 3 > QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, > QRectF const&, int) const 0x1074c40 4 > QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, > QRectF const&, int) const 0x1074c40 5 > QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, > QRectF const&, int) const 0x1074c40 6 > QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, > QRectF const&, int) const 0x1074c40 7 > QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, > QRectF const&, int) const 0x1074c40 8 > QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, > QRectF const&, int) const 0x1074c40 9 > QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor*, > QRectF const&, int) const 0x1074ce0 10 > QGraphicsSceneBspTree::items(QRectF const&, bool) const 0x107539e > 11 QGraphicsSceneBspTreeIndexPrivate::estimateItems(QRectF > const&, Qt::SortOrder, bool) 0xf24058 12 > QGraphicsSceneBspTreeIndex::estimateTopLevelItems(QRectF > const&, Qt::SortOrder) const 0xf24233 13 > QGraphicsScenePrivate::drawItems(QPainter*, > QTransform const*, QRegion*, QWidget*) 0xf194ad 14 > QGraphicsView::paintEvent(QPaintEvent*) 0xf3505c 15 > QWidget::event(QEvent*) 0xa6941a 16 QFrame::event(QEvent*) > 0xd81236 17 QGraphicsView::viewportEvent(QEvent*) 0xf362bb 18 > QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, > QEvent*) 0x11992b7 19 QApplicationPrivate::notify_helper(QObject*, > QEvent*) 0xa240f1 20 QApplication::notify(QObject*, QEvent*) > 0xa2c63f ... <More> > > > > > > ....Volker > ____________________________________________________________________ > Interest mailing list Interest@qt-project.org > http://lists.qt-project.org/mailman/listinfo/interest _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest