[Interest] QGraphicsScene crash after removeItem() and delete item

Guido Seifert wargand at gmx.de
Thu Nov 29 18:02:43 CET 2012


Oh, true. Little mix-up. Sorry. :-)

Guido


On Thu, Nov 29, 2012 at 12:18:57PM -0500, andy fillebrown wrote:

> I don't know what toolkit Guido is using, but QGraphicsItem does not
> inherit from QObject in any version of Qt 4 I've ever seen =)
>
> ~ af
>
>
>
> On Thu, Nov 29, 2012 at 11:17 AM, Guido Seifert <wargand at gmx.de>
> wrote:
>
> > 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 at qt-project.org
> >> http://lists.qt-project.org/mailman/listinfo/interest
> >
> > __________________________________________________________________
> > Interest mailing list Interest at qt-project.org
> > http://lists.qt-project.org/mailman/listinfo/interest



More information about the Interest mailing list