Developpez.com

Plus de 14 000 cours et tutoriels en informatique professionnelle à consulter, à télécharger ou à visionner en vidéo.

Developpez.com - Qt
X

Choisissez d'abord la catégorieensuite la rubrique :

Viadeo Twitter Facebook Share on Google+   
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

Commencer les threads avec QThread

Une instance de QThread représente un thread et fournit les moyens de démarrer un thread, qui va alors exécuter la réimplémentation de QThread::run(). L'implémentation de la fonction run() est pour un thread tout comme le point d'entrée main() l'est pour l'application. Tout code exécuté dans une pile d'appel qui démarre dans la fonction run() est exécuté par le nouveau thread qui se termine lors du retour de la fonction. QThread envoie des signaux marquant le début ou la fin de l'exécution du thread.

Création d'un thread

Pour créer un thread, réalisez une sous-classe de QThread et réimplémentez sa fonction run(). Par exemple :

class MyThread : public QThread
{
     Q_OBJECT
 
protected:
     void run();
};
 
void MyThread::run()
{
     ...
}

Démarrage d'un thread

Maintenant, créez une instance de l'objet du thread et appelez QThread::start(). Notez que vous devez créer un objet de QApplication (ou de QCoreApplication) avant de pouvoir créer un QThread.

La fonction s'arrêtera immédiatement et le thread principal reprendra son cours. Le code qui apparaît dans la réimplémentation de run() sera exécuté dans un thread distinct.

La création de threads est expliquée plus en profondeur dans la documentation de QThread.

Notez que QCoreApplication::exec() doit toujours être appelée depuis le thread principal (le thread qui exécute main()), et non depuis un QThread. Dans les applications GUI, le thread principal est aussi appelé le thread GUI car il est le seul thread autorisé à exécuter des opérations apparentées à la GUI.

[Suivant : synchronisation des threads]

Remerciements

Merci à Louis du Verdier pour la traduction et à Jonathan Courtois ainsi qu'à Philippe Beaucart pour leur relecture !

Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt 4.7
Copyright © 2017 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur, une redirection cassée ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !
Responsable bénévole de la rubrique Qt : Thibaut Cuvelier -