Pyqt Custom QPolygon удаляется: RuntimeError: обернутый объект C / C ++ типа ImagePolygon был удален - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть программа, которая загружает несколько изображений, и каждое изображение имеет массив полигонов, которые представлены пользовательским элементом QGraphicsPolygon.Я загружаю 1 изображение за раз с соответствующими полигонами в два QGraphicsScene (новый QGraphicsScene при каждой загрузке).Проблема, с которой я сталкиваюсь, заключается в том, что после нескольких переключений между изображениями я получаю следующую ошибку: «RuntimeError: обернутый объект C / C ++ типа ImagePolygon был удален».Раньше эта реализация работала хорошо, но с тех пор я добавил в программу много вещей, и теперь я получаю сообщение об ошибке.

Я знаю, что никогда не теряю ссылки на пользовательские QGraphicsPolygons и единственное, чтоудаляется внутри них сам полигон.Все остальные члены остаются без изменений.К сожалению, я не смог определить точную область кода, где полигон внутри QGraphicsPolygon удаляется, а код слишком длинный для размещения здесь.

Я также пытался просто установить новый QPolygon для элемента QGraphicsPolygon каждый раз, когда я добавляю его в сцену, но это дает мне ту же ошибку.

Пожалуйста, дайте мне знать, если кто-нибудь знает, что может быть удалением этого элемента.Держите в моем, я никогда не теряю ссылку на QGraphicsPolygonItem.

Я также был бы признателен, если бы кто-нибудь знал о хорошем способе отладки этого.Я уверен, что смогу исправить ошибку, если бы смог ее найти.

Заранее спасибо

1 Ответ

0 голосов
/ 09 февраля 2019

После долгих испытаний я думаю, что нашел проблему.Поскольку в моей реализации я удаляю QGraphicsScene каждый раз, когда показываю новое изображение, я считаю, что это также удаляло многоугольники.Я не знаю, почему этого не было раньше, но мне удалось это исправить, сначала удалив все предметы со сцены.Мне пришлось перебирать элементы, потому что использование метода clear () в сцене удаляет их.

...