【问题标题】:Pyqt Custom QPolygon getting deleted: RuntimeError: wrapped C/C++ object of type ImagePolygon has been deletedPyqt Custom QPolygon 被删除:RuntimeError: Wrapped C/C++ object of type ImagePolygon has been deleted
【发布时间】:2019-07-03 14:43:34
【问题描述】:

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

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

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

如果有人知道什么可能会删除此项目,请告诉我。请记住我永远不会失去对 QGraphicsPolygonItem 的引用。

如果有人知道调试它的好方法,我也将不胜感激。如果我能找到它,我相信我可以修复错误。

提前谢谢你

【问题讨论】:

    标签: pyqt pyqt5 qgraphicsview qgraphicsscene qgraphicsitem


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 2020-11-10
      • 2018-05-26
      • 2021-12-23
      相关资源
      最近更新 更多