Solved Crash in debug but not in release
-
I have made some function in my code like this method:
MyMessageBox m(this); m.setText(tr("Chargement des goupilles...")); QPixmap p(":/icones/wait"); p=p.scaled(150,150); QMovie *mov = new QMovie(":/gif/wait"); m.setStartMovie(mov); m.showButtons(false,false); m.setObjectName("Mon message d'attente"); //BUG: PROBLEME ICI plantage en mode debug QtConcurrent::run(this, SelectGoupRef::runFindPins, &m); m.exec(); this->accept();
The current class is QDialog(this)
I create a messageBox to show a waiting state for the user, the runFindPins is the process and when the computation is done, is say "accept" to MyMessageBox (m.accept();).In Release mode all work fine but in Debug my app crash ???
-
You should NEVER manipulate UI from a different thread!
This is not supported. Instead you should emit a signal from the thread which is connected to a slot in main thread which closes the message box (use Qt::QueuedConnection in connect(...)). -
You have right I change with:=>
QFutureWatcher<void> watcher; connect(&watcher, SIGNAL(finished()), &m, SLOT(accept())); watcher.setFuture(QtConcurrent::run(this, &SelectGoupRef::runFindPins, &watcher));
And no problem in debug.
Thx