I did some work to override the Slicer drag and drop behavior to do something different that I posted about at
You should be able to use this method for overriding the QMainWindow closeEvent to do your own set of actions instead of the Slicer unsaved changes warning.
Here is some example code that @lassoan then used in the DICOM module to override the regular Slicer drag and drop event behavior.