gpt4 book ai didi

c++ - 使用自定义项目类的 QGraphicsScene::removeItem() 后崩溃

转载 作者:太空狗 更新时间:2023-10-29 21:15:13 25 4
gpt4 key购买 nike

我正在使用自定义项类的实例填充 QGraphicsScene(继承 QGraphicsPathItem)。在运行时的某个时候,我尝试通过调用从场景中删除一个项目(及其子项):

delete pItem;

这会自动调用 QGraphicsScene::removeItem() ,但是它也会导致在下一次重绘期间 QGraphicsSceneFindItemBspTreeVisitor 类发生崩溃。

最佳答案

TL;DR:解决方案是确保 QGraphicsItem::prepareGeometryChange() 项目从场景中移除之前被调用。


问题是在从场景中移除项目的过程中,场景内部索引没有正确更新,导致下次尝试绘制场景时崩溃。

因为在我的例子中,我使用了 QGraphicsPathItem 的自定义子类,所以我只是将对 QGraphicsItem::prepareGeometryChange() 的调用放入它的析构函数中,因为我不是手动从场景中删除项目(通过 QGraphicsScene::removeItem()),但我只是简单地调用 delete pItem; 作为返回触发项目的析构函数以及 removeItem() 稍后。

关于c++ - 使用自定义项目类的 QGraphicsScene::removeItem() 后崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38458830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com