Pyqt自定义QPolygon即将被删除:RuntimeError:ImagePolygon类型的包装C / C ++对象已被删除

时间:2019-02-09 15:59:55

标签: pyqt pyqt5 qgraphicsview qgraphicsscene qgraphicsitem

我有一个程序可以加载多个图像,每个图像都有一个由自定义QGraphicsPolygon项表示的多边形数组。我一次将1个图像及其各自的多边形加载到两个QGraphicsScene中(每次加载都使用新的QGraphicsScene)。我遇到的问题是在两次图像之间切换几次后,出现以下错误: “ RuntimeError:ImagePolygon类型的包装的C / C ++对象已被删除”。该实现曾经可以很好地工作,但是从现在开始,我在程序中添加了很多东西。

我知道我永远不会丢失对自定义QGraphicsPolygons的引用,并且在它们内部唯一被删除的是多边形本身。所有其他成员变量保持不变。不幸的是,我无法查明QGraphicsPolygon内的多边形被删除且代码太长而无法在此处发布的代码的确切区域。

我还尝试了每次将新的QPolygon添加到场景时,都将其简单地设置为QGraphicsPolygon项,但这给了我同样的错误。

请让我知道是否有人可以删除此项目。请记住,我从不丢失对QGraphicsPolygonItem的引用。

如果有人知道调试此错误的好方法,我也将不胜感激。如果可以找到错误,我肯定可以解决。

提前谢谢

1 个答案:

答案 0 :(得分:0)

经过大量测试,我认为我找到了问题。由于在我的实现中,每次显示新图像时都会删除QGraphicsScene,因此我相信这也会删除多边形。我不知道为什么以前没有发生这种情况,但是我设法通过首先从场景中删除所有项目来解决了这个问题。我必须遍历所有项目,因为在场景中使用clear()方法会删除它们。