If your thread exists for the whole life time of the program, then you don't necessarily have to manually delete it.

deleteLater() is used here only to remove it once it has finished, but you could also ask it to stop, wait for it to be stopped and then delete it with "delete" or let its QObject parent delete it (as long as you have stopped it before).

Cheers,
_