Спасибо, дружище!
Ошибка была в том, что я создавал диалог так:
QDialog* dlg = new QDialog(parent, 0, Qt::WDestructiveClose);
что, очевидно эквивалентно
QDialog* dlg = new QDialog(parent, 0, true);
Сделал, как ты посоветовал и все получилось.
Ещё раз спасибо.