OK. Forget about modeless for a moment, if you don't want to deal with threads. Take a look at http://doc.qt.io/qt-5/qdialog.html#open, and start from there instead of the normal QDialog::exec(). I'm thinking that may be all you are looking for.
I still don't know what it is you think you are going to "show the progress against", but that's another issue.....
Thanks for the recommendation. I will look into open(), etc. I will probably end up threading the heavy tasks, but I'm trying to avoid all the tedious synchronization for now.
As for 'progress against': I realized why that may not have made sense. Individual time-consuming tasks will not be able to report on their progress mid-stream (no way to gauge how long to complete), but there is a series of them. Basically a chain of image processes--filters, denoising, etc. and each can take from 5 seconds to almost a minute. Awkward to just sit there looking at the barberpole progress bar, so I thought of setting up a timer in the progress dialog in order to monitor a 'status variable' back at the ranch. As each filter stage completes, the status variable would be updated. When the variable changes from "filter 1" to "filter 2", appropriate text could be displayed in the progress dialog. Or so I hope. :-)