[New] Classe Thread [..]

Il y a deux façons d'exécuter le code d'une classe dans un nouveau
thread.

La première est de faire hériter cette classe de QThread, afin de
réimplémenter sa méthode run(), et d'y insérer les connexions et
le code à exécuter.
Puis de faire appel à sa méthode start() sur une de ses instances
pour lancer son exécution dans un nouveau thread.
L'inconvénient est l'apparition d'une dépendance forte entre la
classe manipulée et la façon dont son code est exécuté.

La deuxième résoud ce problème en se reposant sur l'utilisation d'
une nouvelle classe générique Thread héritant de QThread, de la
méthode moveToThread(QThread* et des signaux et slots.
La seule caractéristique de cette classe générique est de réim-
plémenter la méthode run() en y insérant comme seule et unique in-
struction l'appel à la méthode exec() : lors de son exécution, le
nouveau thread déclenche la boucle d'évenement, et attend un appel
à exit() (ou à quit()).
Son utilisation repose sur :
- méthode Thread::start() : lancer l'exécution du nouveau thread
- signal  Thread::started() : émis dès le début de son exécution
- slot    Thread::quit() : appelle lui même exit, qui stoppe la
boucle d'évènement du thread, et déclenche la sortie du run() ce
qui stoppe l'exécution.

La liaison de ce Thread avec une instance de classe se fait via les
signaux et slots :
- le signal Thread::started() se connecte à un slot de la classe
destiné à démarrer l'exécution des instructions à effectuer dans
un thread séparé
- un signal de la classe symbolisant la fin de l'exécution se con-
necte au slot Thread::quit()

Voir un exemple :
http://qt-labs.developpez.com/thread/qthread-sans-maux-tete/#LIV
[New] Réimplémentation de la méthode run()