Le seul moyen d'activer le threading démontré dans la documentation QT consiste à hériter QTthread, puis remplacez sa méthode de course ().
class MyThread : public QThread { public: void run(); }; void MyThread::run() { QTcpSocket socket; // connect QTcpSocket's signals somewhere meaningful ... socket.connectToHost(hostName, portNumber); exec(); }
3 Réponses :
QThread elle-même est dérivé de QObject. Vous devez remplacer sa méthode d'exécution pour l'utiliser, vous devez donc hériter de QObject afin d'utiliser QThread. p>
Pourquoi voulez-vous ne pas hériter de qobject? p>
Vous pouvez utiliser multithreading sans hériter de qObject avec qtconcurrent :: exécution (): p>
qfuture qtconcurrent :: exécution (fonction fonction, ...)
Fonctionne la fonction dans un fil séparé. Le fil est pris à partir du global QTheadpool. Notez que la fonction peut ne pas fonctionner immédiatement; La fonction ne sera exécutée que lorsqu'un fil est disponible. p> blockQuote>
Je sais que c'est un fil antique, mais les gens pourraient se retrouver ici, donc je pense que sa peine de mentionner les liens suivants: - blog.qt.digia.com/blog/2010/06/17/youre-ding-it-wrong - woboq.com/blog/qThread-you-were-not-doing-so-wrong .html - qt-project.org/wiki/threads_events_qobjects
Si vous ne souhaitez pas hériter de QThread, vous pouvez faire une emballage qui hérite de qthread et prend vos objets comme argument, par exemple. à travers une interface irournable (que vous faites et laissez vos classes de thread hériter). P>
La DOC QT et les réponses sont obsolètes. QT encourage fortement une autre façon d'utiliser QThread maintenant: doc.qt.io/qt-5/ qthread.html