If you don't do a real good update now, it will bite you in the ass later on! Count on it!!
Since he stops the running thread, it is a program with an finite loop, not as you mentioned that maya is not totally right. Otherwise check out the QThreadPool stuff for higher level QThread control.
Finally, the best/clean way I found to deal with my requirement was this:
Inside the main.cpp and before I start my service, I make all the verifications I need... if something goes wrong, then I call "return 0;" and that's it, a clean exit. If everything goes well, then I start my service. End of the story.