Название: Правильное удаление виджета Отправлено: karonator от Октябрь 10, 2010, 20:52 Всем доброго времени суток.
У меня вот такой вопрос. Есть у меня QScrollArea. Я добавляю виджет на неё. Ну например так: Код: QScrollArea * A; Код: QHBoxLayout * C; Задача такая: какие действия надо выполнить, чтобы правильно удалить виджет и Layout, оставив QScrollArea в таком состоянии, в каком оно было до добавления виджета? Про Layout я вроде нашёл removeItem, но как грамотно удалить виджет, не понял. Помогите пожалуйста. Название: Re: Правильное удаление виджета Отправлено: kibsoft от Октябрь 10, 2010, 21:38 delete B;
Название: Re: Правильное удаление виджета Отправлено: karonator от Октябрь 10, 2010, 22:11 Вы уверены?
Просто я делаю вот так и получаю segmantation folt Код: QObjectList childs = ui->scrollArea->children(); Название: Re: Правильное удаление виджета Отправлено: Alp от Октябрь 11, 2010, 08:42 Так происходит потому, что при удалении scrollArea она, как QObject, удаляет всех своих детей. А у тебя в списке её детей уже невалидные указатели (поскольку ты предварительно пробежался по списку и убил их всех).
В подобном случае, когда известно, что у виджетов есть общий владелец-родитель необходимо удалять только его. Всех своих детей он удалит сам без твоей помощи. Название: Re: Правильное удаление виджета Отправлено: GreatSnake от Октябрь 11, 2010, 09:03 Цитировать Просто я делаю вот так и получаю segmantation folt Таким удалением вы ещё убиваете как минимум и скроллбары.Название: Re: Правильное удаление виджета Отправлено: trot от Октябрь 12, 2010, 20:54 А может сначала сделать removeWidget(В), а потом вызвать delete
|