È corretto utilizzare i segnali per segnalare errori?
Sì, ma generalmente lo rendere dipendente dalla situazione. Se l'errore può verificarsi in modo asincrono, allora un segnale per indicare tale è sicuramente corretto. Se l'errore si verifica solo quando il codice client chiama una determinata funzione, allora l'errore dovrebbe essere nella risposta da quella funzione, non come un segnale. Tuttavia, vi è una vasta gamma di situazioni intermedie che potrebbero essere fatte caso per caso.
Inoltre, i meccanismi di slot di segnale possono facilitare la comunicazione tra thread (che potrebbe essere considerato il caso asincrono) e li userò a tale scopo (errore o no).
Va bene supporre che verrà gestito un segnale?
I segnali sono (filosoficamente) progettati per indicare che qualcosa è accaduto. Come altri hanno indicato, non è mai una buona idea presumere che un segnale sarà abbinato a uno slot, o anche con solo uno slot.
È possibile utilizzare i segnali per avviare azioni? Per esempio. signal displayInfoScreen() deve essere gestito da uno slot che mostra una schermata informativa.
I segnali possono essere utilizzati per avviare azioni, ma probabilmente non nel modo in cui si sta pensando. Il segnale indica che pippo è successo. Se il codice che controlla la tua classe decide che quando si verifica foo, dovrebbe essere visualizzata una finestra di dialogo, quindi il segnale è stato utilizzato per avviare tale azione. Tuttavia, in genere non è responsabilità della classe che emette il segnale per garantire che si verifichi l'azione appropriata, poiché non è responsabile di tale azione. (Se così fosse, allora dovrebbe essere parte della stessa classe, e nessun segnale sarebbe necessaria.)
fonte
2010-02-24 16:33:48
Accettato in quanto questa risposta fornisce semplici esempi di utilizzo in Qt. Pensi che gli errori siano ok, ma solo quando l'elaborazione è asincrona? – larsmoa
Grazie! E, sì, altrimenti, aggiungi un valore di ritorno dello stato o un argomento di stato (come fa QString :: toInt). – e8johan