В этом нет никакой магии. Проще говоря, QObject автоматически удаляет своих потомков в своем деструкторе. Так что, пока у вашего виджета есть родитель и вы уничтожаете его, вам не нужно беспокоиться о детях. Так что, если вам интересно, что это был за параметр QObject * parent
, то вот для чего он нужен.
Также из документа:
Все дочерние объекты удалены. Если какой-либо из этих объектов находится в стеке или является глобальным, рано или поздно ваша программа потерпит крах.
Итак, не давайте родительских объектов объектам, которые выделены в стеке.