[Solved]Transfer parameter between QThread
-
Hi,
You have to setup your thread before starting it. If you need to change things at run time, you need setters.
But before that, are you sure you need a QThread derivative ? Wouldn't a worker object be better ?
-
Hmm, the QThread object itself is only a wrapper for what SGalst points out. You need a worker object in the thread to be run. Or you need to derive from QThread (but this is discouraged). So have a look at this post:
"Thread":http://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-full-explanation/
Then to pass data from one thread to another use signal/slots or mutex protected variables with setter/getter functions. -
There's also "this one":http://woboq.com/blog/qthread-you-were-not-doing-so-wrong.html
This really depends on the use case. Most of the time the worker object is the right solution, but not always.
Also, depending on the job, QtConcurrent suits even better.
-
Thanks all your suggestions, Actually, I wrote a program is GUI, and whenever user clicked the button, something would be done and displayed to the QTextEdit of GUI. But If I don't use thread, the GUI would be locked because the thread of GUI is busy.It couldn't respond to user.So should I put work item into worker, then use singnal & slot pass information to GUI that could display to user??
-
Yes but be careful when you start using multithreading.
Please read the examples and the documentation from Qt's various threading classes (and if you're nor familiar with the thread subject, a good book about them is really a good idea). And only then start designing your application using threads.