- start a process (an external command)
- wait for exit with waitForFinished(-1)(which blocks until process exits)
- capture the output with a QProcess::readyReadStandardOutput() signal handler
- the signal handler calls QApplication::processEvents()
The problem has already been reported on Ubuntu's Launchpad as well as in QtSoftware bugtracker. Unfortunately, it seems there is no solution, it won't be fixed in Qt library and should be avoided... The workaround I implemented for QComicBook-0.4.1 (to be released soon) is a busy-loop around waitForFinished(1000) (i.e. 1 second) and processState() calls. Not the nicest solution, but it seems to work fine and I can still use processEvents() to provide progress bar updates when unpacking archives.