Mi sto generalizzando su un paio di librerie della GUI ma a un livello molto alto il concetto più importante che devi capire è che una GUI è guidata dagli eventi .
In un'applicazione console il tuo input dell'utente di solito avviene in determinati punti che hai definito. Chiedi al tuo utente, attendi il suo input, calcoli qualcosa in base a quell'input. Una delle differenze principali è che l'input avviene solo in un punto, stai leggendo il testo dalla riga di comando ( stdin
in C ++).
In un'applicazione GUI in genere ci sono più punti in cui potrebbe avvenire l'input, ad esempio pulsanti che eseguono azioni o campi di testo diversi. È qui che entrano in gioco gli eventi. Ad esempio, facendo clic su un pulsante si attiva un evento. Questo evento deve essere gestito da un gestore di eventi , che di solito è solo un metodo che accetta un oggetto evento e viene chiamato quando viene attivato un tale pari. Come fa il tuo pulsante a sapere del gestore dell'evento? Di solito ti iscrivi (o lo ascolti ).
Ecco un esempio "ispirato al C ++", questo non è il vero codice QT o C ++.
class MyClickHandler : public ClickListener{
void clickHandler(ClickEvent e){
showAlertBox("The button "+e.getSource().getName()+" has been clicked");
}
};
Quando si crea il pulsante, si registra un'istanza della classe MyClickHandler sul pulsante.
...
MyClickHandler handler();
Button b("Save");
b.registerListener(handler);
...
Ora ogni volta che si b
fa clic sul pulsante viene visualizzata una finestra di messaggio che dice "È stato fatto clic sul pulsante Salva".
Puoi immaginare che un'applicazione GUI abbia due fasi:
- Stabilire la GUI: un breve periodo all'avvio, in cui tutti gli oggetti vengono creati e collegati tra loro.
- Il ciclo degli eventi : la tua GUI è in un unico ciclo while e rimane semplicemente inattiva finché non viene attivato un evento.
Questo è un esempio molto semplice, ma consiglierei con qualunque framework prendiate di provare a mostrare una finestra di messaggio quando si fa clic su un pulsante.
Per il framework ce ne sono molti là fuori: nel caso di C ++ probabilmente consiglierei Qt.
Un'ultima parola di consiglio: stai lontano dai designer della GUI fino a quando non sai davvero cosa sta succedendo in background. Non è così difficile scrivere alcuni semplici esempi e capire prima il ciclo degli eventi e poi passare a layout più complessi.