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

andy fillebrown andy.fillebrown at gmail.com
Thu Nov 29 18:18:57 CET 2012


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