в виджете(1) находится виджет(2), у которого есть виджет-ребенок(3). При удаление виджета(2)(remove from parent ), виджет(3) не удаляеся
А, теперь я понял, о чем речь.
Да, в таком случае нужно делать так, как ты делал - сначала удалить все дочерние виджеты, а после родительский