Display thank you message in QuickForm
The way I've done this is:

in preProcess, if (!empty($_GET['reset'])) { then inspect GET for the initialisation data, and if it's valid, store it using $this-&gt;set('key', $validData). I've also set some object properties in this stage, but these will only be around for one request, including a showForm one. I have called setMessage() with any initiation data validation errors.

in buildQuickForm, I've reduced this to adding just the form elements I need to display. (I was previously using hidden elements to store the authorised/parsed initiation data.) I also $this-&gt;assign('showForm', $this-&gt;_showForm);

in my .tpl file I wrap the whole thing in {if $showForm}.

in postProcess I fetch data using $this-&gt;get('contactID'); and user submitted form values from $this-&gt;exportValues(). I process that and use setStatus. I then set $this-&gt;_showForm = FALSE (might not be necessary) and do a redirect to the same path but without any query data.

on the redirect, without any GET data, my default FALSE showForm variable is not changed, and the form does not display, except for the setMessage messages.


Phew.
I'm not sure this is the right way. But it seems to work. Other answers very welcome!