А как отловить в MianWindow что возвращает QDialog accept или reject??
QDialog dlg(this);
if (dlg.exec() == QDialog::QDialog::Accepted) {
//do something
}
else {
//do something else
}
или законнектить сигналы QDialog accepted(), rejected() или finished(int ret) с нужными тебе слотами