Bonjour,

Mon souci est lié à l'utilisation de waitKey() dans un QThread.
Le code est tout simple, je crée un thread, y encapsule un objet.

Lorsque le thread démarre ( start() ), la méthode d'affichage de l'objet est appelée :

Le code dans le main :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
         // Création et lancement du thread
        QThread* t = new QThread();
        Displayer* d = new Displayer();
 
        d->moveToThread(t);
 
        QObject::connect(t, SIGNAL(started()), d, SLOT(loopDisplay()));
        t->start();
 
        // On attend pour laisser le temps au thread de tourner
        sleep(10);
Et le code du slot loopDisplay()

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
void Displayer::loopDisplay()
{
    while (1)
    {
        Mat img = imread("../../lena.jpg");
        imshow("lena", img);
        waitKey(100);
    }
}
La slot est bien exécuté, car si je fais un affichage dans la console, cela fonctionne. En revanche, le thread semble rester bloqué à l'instruction waitKey(), et la fenêtre avec l'image ne s'affiche jamais.
Le même code exécuté dans le thread principal fonctionne sans problème.

Je me demandais donc si la méthode waitKey() avait une quelconque incidence sur le fonctionnement d'un QThread.

Merci d'avance !