Правильное удаление QGraphicsItem |
Здравствуйте, гость ( Вход | Регистрация )
Правильное удаление QGraphicsItem |
urdnot |
4.9.2014, 17:36
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 4.9.2014 Пользователь №: 4221 Спасибо сказали: 0 раз(а) Репутация: 0 |
Имеется следующая функция ,которая вызывается посредствам выбора пункта контекстного меню MyQGraphicsItem:
При выполнении программы выскакивает Segfault. Похоже после вызова removeItem QGraphicsView почему-то пытается его перерисовать, но на тот момент я уже освободил память под item. И вот как тут быть? Как удалить итем со сцены и освободить память. |
|
|
FireBlack |
5.9.2014, 5:06
Сообщение
#2
|
Студент Группа: Участник Сообщений: 38 Регистрация: 17.10.2010 Из: г.Пенза Пользователь №: 2121 Спасибо сказали: 13 раз(а) Репутация: 1 |
При выполнении программы выскакивает Segfault. Похоже после вызова removeItem QGraphicsView почему-то пытается его перерисовать, но на тот момент я уже освободил память под item. Показывайте проект полностью, так сложно что то сказать. И вот как тут быть? Как удалить итем со сцены и освободить память. Со сцены item'ы убираются через QGraphicsScene::removeItem(QGraphicsItem * item) и после удаляются через обычный delete. Скорее всего у Вас где то закралась ошибка и без кода сложно сказать где именно. |
|
|
urdnot |
5.9.2014, 10:51
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 4.9.2014 Пользователь №: 4221 Спасибо сказали: 0 раз(а) Репутация: 0 |
Item Point:
Раскрывающийся текст
Item Line: Раскрывающийся текст
И наконец MyGraphicsView: Раскрывающийся текст
Проблема в removePoint. |
|
|
FireBlack |
5.9.2014, 11:54
Сообщение
#4
|
Студент Группа: Участник Сообщений: 38 Регистрация: 17.10.2010 Из: г.Пенза Пользователь №: 2121 Спасибо сказали: 13 раз(а) Репутация: 1 |
|
|
|
Litkevich Yuriy |
5.9.2014, 14:35
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Сначала удалил объект, потом обращаешся к нему
|
|
|
FireBlack |
5.9.2014, 15:14
Сообщение
#6
|
Студент Группа: Участник Сообщений: 38 Регистрация: 17.10.2010 Из: г.Пенза Пользователь №: 2121 Спасибо сказали: 13 раз(а) Репутация: 1 |
|
|
|
urdnot |
5.9.2014, 15:26
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 4.9.2014 Пользователь №: 4221 Спасибо сказали: 0 раз(а) Репутация: 0 |
Litkevich Yuriy it_p это итератор на указатель. Я освобождаю память на которую ссылается указатель , но итератор остается валидным, поэтому я могу по нему удалить элемент из QVector.
Я решил проблему. Во-первых в самом removePoint проводить изменения в нужном порядке (корень проблемы как оказалось совсем не здесь, но мне кажется эти ошибки тоже могут проявить себя): Раскрывающийся текст
И самая главная моя ошибка в Line: Раскрывающийся текст
Я не замечал эту ошибку потому-что она не проявлялась до того момента пока я не начал удалять точки. Как оказалось название темы почти не связано с решением. Тему можно закрывать. |
|
|
Litkevich Yuriy |
6.9.2014, 10:06
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Текстовая версия | Сейчас: 6.10.2024, 19:19 |