I have checked all mentioned ways. Overriding eventClose() and issuing deleteLater() in it works like a charm.
deleteOnClose attribute works for empty QDialog, but after adding child widgets, signals and slots app crash with access violation on internal delete upon dialog close. Maybe this flag has some additional constraits / conditions i'm not aware about.