Победил. Суть такая, кнопку на втором диалоге надо соединить со слотом accept, тогда можно ловить возвращаемое значение после закрытия второго диалога, без изобретения дополнительных велосипедов.
C++ (Qt)
Dialog2::Dialog2(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog2)
{
ui->setupUi(this);
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(accept())); // <<<=============
}
Затем в слоте нажатия кнопки на первом диалоге делаем так:
C++ (Qt)
void Dialog1::on_pushButton_clicked()
{
Dialog2 *dlg2 = new Dialog2(this);
hide();
int ret = dlg2->exec();
delete dlg2;
if (ret == 1) show(); else close();
}
При нажатии кнопки во втором диалоге, просто его закрываем:
C++ (Qt)
void Dialog2::on_pushButton_clicked()
{
close();
}