Try reimplementing QDialog::done(), if it's not enough, you can always reimplement QWidget::closeEvent().