Хм, добавление строки в конструктор диалога не дало результатов. Сигнатура closeEvent неверная или диалог не toplevel? Сам-то он отлично ловит закрытие в метод closeEvent.
class TestDialog( QtGui.QDialog ):
def __init__( self, *args ):
QtGui.QWidget.__init__( self, *args )
gridLayout = QtGui.QGridLayout(self)
widget = TestWidget(self)
self.connect(self, QtCore.SIGNAL("closeEvent(QCloseEvent *)"), widget.closeEvent )
gridLayout.addWidget( widget, 0, 0, 1, 1)
Можно конечно законнектить виджеты на свой сигнал типа closeMyWidgets и эмитить его из closeEvent диалога, но хотелось бы разобраться.