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);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"
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 } }
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 !
Partager