Лично я бы выбрал либо использовать
dlg->setAttribute(Qt::WA_DeleteOnClose);
или сделать диалог динамически выделяемым элементом, то есть создать его только один раз:
// constructor
: dialog_(0)
// member function
{
if (! dialog_)
dialog_ = new MyDialog(this);
dialog_->show();
dialog_->raise();
}
Таким образом, диалог удаляется, когда родитель умирает, и его нужно создать только один раз.