La maggior parte dei toolkit GUI oggigiorno utilizza il modello Signals + Slots. Sono stati Qt e GTK +, se non sbaglio, a fare da pionieri.
Sai, i widget o gli oggetti grafici (a volte anche quelli che non sono visualizzati) inviano segnali al gestore del ciclo principale. Il gestore del ciclo principale chiama quindi gli eventi , i callback o gli slot assegnati per quel widget / oggetto grafico. Di solito ci sono virtual
gestori di eventi predefiniti (e nella maggior parte dei casi ) già forniti dal toolkit per gestire tutti i segnali predefiniti, quindi, a differenza dei progetti precedenti in cui lo sviluppatore doveva scrivere l'intero ciclo principale e il gestore per ogni messaggio stesso (pensa WINAPI), lo sviluppatore deve solo preoccuparsi dei segnali su cui ha bisogno per implementare nuove funzionalità.
Ora, per quanto ne so, questo design viene utilizzato nella maggior parte dei toolkit moderni. Ci sono Qt, GTK +, FLTK ecc. C'è Java Swing. C # ha persino una funzione linguistica (eventi e delegati) e Windows Forms è stato sviluppato su questo progetto. In effetti, nell'ultimo decennio, questo progetto per la programmazione della GUI è diventato una specie di standard non scritto. Dal momento che aumenta la produttività e fornisce una maggiore astrazione.
Tuttavia, la mia domanda è:
Esiste un design alternativo, parallelo o pratico per la moderna programmazione della GUI?
vale a dire il design Signals + Slots è l'unico pratico in città? È possibile eseguire la programmazione della GUI con qualsiasi altro design? Sono disponibili toolkit moderni (preferibilmente di successo e popolari) basati su un design alternativo?
std::function
, non un segnale asincrono. Inoltre, il WinAPI non prevedeDefWindowProc
che elabora i messaggi di Windows come implementazione di default. Quindi suppongo che la tua domanda sia basata su una logica imperfetta.