Quando chiamiamo QApplication :: exec () alla fine della nostra funzione main (), l'applicazione entra nel ciclo degli eventi di Qt. Concettualmente, il ciclo degli eventi ha il seguente aspetto:
while (!exit_was_called) {
while (!posted_event_queue_is_empty) {
process_next_posted_event();
}
while (!spontaneous_event_queue_is_empty) {
process_next_spontaneous_event();
}
while (!posted_event_queue_is_empty) {
process_next_posted_event();
}
}
Innanzitutto, il ciclo degli eventi elabora qualsiasi evento registrato finché la coda non è vuota. Quindi, elabora gli eventi spontanei finché non ne rimane nessuno. Infine, elabora tutti gli eventi pubblicati che sono stati generati durante l'elaborazione degli eventi spontanei.
Quindi, un singolo thread (main () thread in un'applicazione GUI a thread singolo) non può gestire il programma e il loop di eventi (con funzionalità Event Queue). Esistono thread diversi da quelli principali creati per gestire gli eventi in QT?