crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Удаление дочерних объектов, При удалении родителя удаляются все дочерние объекты
denisKazachkov
  опции профиля:
сообщение 3.9.2012, 12:02
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 26.6.2012
Пользователь №: 3433

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добрый день уважаемые разработчики.
Столкнулся с такой проблемой.
Я передаю widget в QDockWidget. Устанавливаю:
QWidget* widget = new QWidget();
QDockWidget* dock = new QDockWidget();
dock->setWidget(widget);


Теперь, после удаления дока удаляется и дочерний виджет.

Вопрос, как можно запретить удалять дочерние при удалении родительского?

Пробовал делать так.

QWidget* widget_1 = new QWidget();
QWidget* widget_2 = new QWidget();
QVBoxLayout* vbox = new QVBoxLayout();
vbox->addWidget(widget_1);
widget_2->setLayout(vbox);
QDockWidget* dock = new QDockWidget();
dock->setWidget(widget_2);


Затем до удаления делаю:
QWidget* widget = dock->widget();
while (widget->layout()->takeAt(i) != 0)
{
    qDebug() << "############### clear layuot = " << i;
    i++;
}
delete dock;




Но почему то, все равно вызывает деструтор widget_1;
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов (1 - 3)
RazrFalcon
  опции профиля:
сообщение 3.9.2012, 13:13
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Ничего не понял, но может:
QWidget* widget = new QWidget(this);
?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
denisKazachkov
  опции профиля:
сообщение 3.9.2012, 13:37
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 26.6.2012
Пользователь №: 3433

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(RazrFalcon @ 3.9.2012, 14:13) *
this

Причем тут создание нового объекта?
Поясню еще раз.
- Есть некий виджет с элементами управления.
- Есть док виджет
- Я qdocW.setWidget(widget)
- Затем удаляю qdocW.

После удаления qdocW автоматически удаляется и widget.

Как можно обойти этот момент ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 3.9.2012, 18:34
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(denisKazachkov @ 3.9.2012, 14:37) *
Цитата(RazrFalcon @ 3.9.2012, 14:13) *
this

Причем тут создание нового объекта?
Поясню еще раз.
- Есть некий виджет с элементами управления.
- Есть док виджет
- Я qdocW.setWidget(widget)
- Затем удаляю qdocW.

После удаления qdocW автоматически удаляется и widget.

Как можно обойти этот момент ?

Смени родителя на дочернем виджете. widget->setParent(newParent)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 11.7.2025, 22:21