Название: Удаление объекта Отправлено: SibBear от Январь 03, 2014, 07:21 Здравствуйте. Вопрос новичка. Есть класс, основанный на QDialog, объект которого создается по нажатию меню:
Код: void MainWindow::show_report() Удалится ли этот объект после закрытия, и что нужно сделать, чтобы он удалился? Нужно ли создавать, например, вектор с указателями для последующего их удаления? Можно ли в деструкторе указать deleteLater()? Спасибо. Название: Re: Удаление объекта Отправлено: Igors от Январь 03, 2014, 11:29 Проще всего установить флажок WA_DeleteOnClose
Название: Re: Удаление объекта Отправлено: gil9red от Январь 03, 2014, 11:47 Только сейчас задумался: а что происходит с виджетом, у которого нет флага WA_DeleteOnClose и которого закрыли ( close(); )?
Он просто прячется( setVisible( false ); )? Название: Re: Удаление объекта Отправлено: Old от Январь 03, 2014, 12:00 Только сейчас задумался: а что происходит с виджетом, у которого нет флага WA_DeleteOnClose и которого закрыли ( close(); )? Да, он просто скрывается. Уничтожение произойдет, когда будет уничтожаться родитель (если он есть) или никогда.Он просто прячется( setVisible( false ); )? Название: Re: Удаление объекта Отправлено: gil9red от Январь 03, 2014, 12:05 Ясно :)
Название: Re: Удаление объекта Отправлено: Serr500 от Январь 03, 2014, 13:10 Удалится ли этот объект после закрытия? Нет. Он удалится только когда удалится его родитель.что нужно сделать, чтобы он удалился? Либо дать ему флаг WA_DeleteOnClose, либо вызвать где-нибудь внутри метод deleteLater().Можно ли в деструкторе указать deleteLater()? Нельзя. Деструктор вызывается уже в процессе разрушения объекта.Название: Re: Удаление объекта Отправлено: SibBear от Январь 03, 2014, 13:59 Ясно. Спасибо!
Название: Re: Удаление объекта Отправлено: Alex Custov от Январь 03, 2014, 14:32 Зачем его вообще создавать динамически? Создавай в стеке и он удалится сам после выхода из метода
Название: Re: Удаление объекта Отправлено: SibBear от Январь 03, 2014, 15:23 Зачем его вообще создавать динамически? Создавай в стеке и он удалится сам после выхода из метода Потому что нужна возможность запускать несколько экземпляров. |