![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
QMainWindow |
![]()
Сообщение
#1
|
Участник ![]() ![]() Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Вечер добрый.
Есть код: Создал некоторый виджет, положил его для удобства в QList, удалил, чтобы не занимал место. Далее этот список попользовал и пришло время удалить из него этот виджет. Тут вопрос: чтобы этот виджет удалился и из списка, и из памяти, достаточно этой строчки? Или нужно как-нибудь так:
PS Ну понятно, что i - это порядковый номер моего виджета, необязательно первый. Сообщение отредактировал QMainWindow - 9.1.2013, 21:29 |
|
|
![]() |
QMainWindow |
![]()
Сообщение
#2
|
Участник ![]() ![]() Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Уже неправильно. В QList ты сохранил только указатель на виджет, за сам виджет отвечаешь ты, он не сохраняется в myWidgetList. Следовательно, после того как ты удалил виджет myWidget, указатель в myWidgetList остался, но стал указывать на нераспределённую память, в которой ранее был твой виджет. Формально его уже нет и что там по этому участку памяти, неизвестно. delete тут делать не надо. Ну да, это я ошибся. Ну понятно, имелось ввиду создать виджет, положить ЕГО в список, а то, что осталось удалить. Это удалит сам виджет. А removeAt удалит только указатель на виджет из QList. Т.е. тебе нужно сделать что-то вроде
Спасибо. |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 6:19 |