I would definitely use deleteLater() since otherwise you are basically doing a "delete this" (code in Window and its QML engine still being executed at time of delete).
You will have to debug the crash to see where it happens, though.
E.g. run the application in a debugger.
The user closing the window manually is different, as this doesn't delete the window.
Cheers,
_
Bookmarks