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 ( stdinin 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 bfa 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.