Bonjour,

je souhaiterais afficher sur une carte des points. Lorsque je clique sur un bouton, les coordonn�es de ses points se mettent � jour, ils se d�placent donc sur la carte jusqu'� ce que je clique � nouveau sur le bouton. Pour cela, j'ai �cris le code suivant :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
 
class tabVisu : public QWidget {
    Q_OBJECT
...
private:
    bool loopRun;
private slots:
    void playDisplay(const bool state);
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
tabVisu::tabVisu(QWidget *parent) : QWidget(parent) {
    loopRun= false;
    QPushButton * playBt = new QPushButton(tr("Jouer"));
    playBt->setCheckable(true);
    connect(playBt, SIGNAL(clicked(bool)), this, SLOT(playDisplay(bool)));
}
 
void tabVisu::playDisplay(const bool state) {
    loopRun = state;
    QtConcurrent::run(this, &tabVisu::infiniteLoopDisplay);
}
 
void tabVisu::infiniteLoopDisplay() const {
    while(loopRun) {
        // calcul des nouvelles positions et modification de l'affichage sur la carte
    }
}
Ca compile mais lorsque j'appuie sur le bouton, j'obtiens le message d'erreur : "ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to objects owned by a different thread. Current thread 24769638. Receiver '' (of type 'MainWindow') was created in thread 19729290"

J'essaye de comprendre ce qui ne fonctionne pas mais d�couvrant QtConcurrent, je n'arrive pas m'en sortir. Pourriez-vous m'aider ? Merci !