mercoledì 9 marzo 2016

Esecuzione differita QT con lambda C++ 11

Questo è un esempio in Qt, di come creare un azione che viene eseguita dopo tot secondi, senza interrompere il thread di esecuzione del codice. Al "singleShot" passo un lambda di C++ 11, per eseguire un metodo allo scadere del tempo.
//Es.: Codice nello scope di una funzione
...

//Simulazione ritardo hardware
QTimer::singleShot(2000, this, [=]() {
 eseguiDopo();
});

...

//Qui arrivo subito, mentre dopo 2 secondi viene eseguito "eseguiDopo()"
...