Russian Qt Forum

Qt => Общие вопросы => Тема начата: Vld2 от Январь 27, 2009, 22:39



Название: Освобождение памяти
Отправлено: Vld2 от Январь 27, 2009, 22:39
Есть у меня виджеты, скажем QTreeWidgetItem, и для каждого виджета есть свой QAction
QTreeWidgetItem *ob1= new QTreeWidgetItem(this);
QAction *p_act=new QAction();
ob1->addAction(p_act);
delete ob1;
если я скажем удалю ob1, то надо мне ли освобождать память для p_act (делать delete p_act)?


Название: Re: Освобождение памяти
Отправлено: Dendy от Январь 27, 2009, 23:09
Да, QAction нужно удалять отдельно, так как они могут быть привязаны к нескольким элементам. Это такой себе узел, в который сливаются действия пользователя. Например, из меню, по нажатию кнопки, горячей клавишей. Следовательно отдельно взятый источник события не может удалить QAction, так как его может использовать кто-то другой. Удаляйте вручную, или назначьте для QAction родителя, который его удалит в собственном деструкторе.