===== Commencer les threads avec QThread ===== Une instance de [[QThread]] représente un thread et fournit les moyens de [[QThread#start|démarrer]] un thread, qui va alors exécuter la réimplémentation de [[QThread#run|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 [[QThread#run|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|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 [[QThread#run|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|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. ==== Remerciements ==== Merci à pour la traduction et à ainsi qu'à pour leur relecture !