The above looked very promising and worked in its context but implementing the same in my existing code resulted in all sorts of other problems. From a speed aspect I saw no difference at all from app.processEvents() at various points during execution.
So … I ended up scrapping QThread and returning to my previous method which works for me.
I added an additional button to my function (msgBox) and during the writing thousands of records to my database I can set a flag and call app.processEvents() in the buttons event which then interrupts the loop writing the records. I had to add some additional flags and code to various events to handle when things get interrupted but this works exactly as I was hoped.