[clug] long run function in trolltech qt widget

jm jeffm at ghostgun.com
Wed Dec 3 22:50:11 GMT 2008

Brad Hards wrote:
> The normal approach would be to connect the accepted() signal to a custom slot 
> that executes long_run().
> However to show any GUI stuff changing, you need to return to the event loop. 
> How is long_run() returning control to the event loop? Are you dividing up 
> the run into multiple steps, or are using some kind of threading approach?

I have code similar to,

MyPage::MyPage(QWidget *parent)
  : QWizardPage(parent)
  setTitle(tr("Do the work"));
  progress = new QProgressBar(this);

extern "C" void callback(void *arg)
  QProgressBar *bar = (QProgressBar *)arg;

  printf("doing work\");
  bar->setValue(bar->value() + 1);

   result = long_run(callback,  (void *) progress)

   // To be done
   return true;

doWork() doesn't return until it's actually finished the calculation. 
There isn't a contiuation unfortunately. How do I call doWork() so that 
MyPage is displayed while the work is being done? I've been trying to 
avoid a thread for this as it only meant to be a prototype at this stage 
and QThread looks as if it will take a while to understand. Especially 
getting values in and out of threads.


More information about the linux mailing list