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 !