There are issues on some of the platforms that currently limit Qt to only one GUI thread. This is being worked on, and the Trolls expect that this limitation will be gone in Qt5. In the meantime, however, all GUI operations need to be performed in the main GUI thread. That means no widgets, dialogs, painting, and a few not-so-obvious things like no QPixmaps either.

There is an easy workaround, however. In Qt4 you can send signals to objects owned by another thread. This is sent asynchronously. So you can create a dialog in the main GUI thread, show it in response to a signal sent when the worker thread starts, and hide it in response to a signal sent when the worker thread finishes. If you're using Qt3, you can create a similar solution by using your favorite inter-thread communication mechanism.

The Qt4 mandelbrot demo has an example of inter-thread signals and slots.