Utilisation de 'run' de QtConcurrent
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:
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:
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 !