[clug] long run function in trolltech qt widget

jm jeffm at ghostgun.com
Fri Dec 5 03:11:09 GMT 2008


>>  
> Luckily this assumption holds. I got the thread version going 
> yesterday, but the problem now is that it runs multiple times.  The 
> thread start method it called from within the wizard's page 
> showevent() method, but it seems that in the course of things it 
> receives multiple QEvent::Show events. I've tried various way of 
> having it run only once, but seem to be missing something. At the 
> moment the code is something similar to
>

I think I may have found the fix. Changing
>  // QThread emits finished when run() completes
>  connect(genThread, SIGNAL(finished()), this, SIGNAL(completeChanged()));

to

connect(genThread, SIGNAL(finished()), this, SLOT(generateFinished()));


and adding the slot

void GenPage::generateFinished()
{
 std::cout << "generateFinished()" << std::endl;
  complete = true;
  emit completeChanged();
}

seems to work even though the Trolltech's example and documentation seem 
to suggest the former should work. If there is a cleaner way to 
accomplish the effect I'm after feel free to comment.

Also, is there an alternative to the QProgressBar? It's not possible to 
tell ahead of time how many times the call back function will be called. 
Is it possible to have a spinning wheel? Is there a ProgressBall?

Jeff.



More information about the linux mailing list