Qualcuno può spiegare come funziona una GUI e quando dovrei iniziare a usarne una? [chiuso]


16

Sto imparando il C ++ da circa un mese e, prima di andare oltre, vorrei chiarire questa noiosa domanda che continuo ad avere. So cos'è una GUI, ma non so davvero come funzioni e forse esempi di quelli popolari?

Anche se so che la programmazione da riga di comando è la base, penso che sarebbe divertente scherzare con una GUI.

Anche se ho circa 3 milioni di altre domande, le salverò: D


1
l'ultima riga mi ha fatto sorridere :) +1 per quello
CyprUS

Risposte:


28

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.


Se aggiungi un punto e virgola alla fine della definizione della classe e rendi pubblica l'eredità, sarebbe la sintassi C ++ corretta / possibile.
Lstor,

1
Fatto. Ma non volevo sollevare false aspettative, dal momento che il codice non sarà eseguibile dopo tutto. La maggior parte della mia esperienza è in Swing che probabilmente si riflette nei nomi delle classi. Gli stessi concetti saranno chiamati in modo diverso in quadri diversi.
sebastiangeiger,

1
+1 Questa sembra l'unica risposta che risponde alla domanda (a me sembra che non stia solo chiedendo dei quadri, sta chiedendo dei concetti generali)
Federico Klez Culloca,

1
Ewwww .... brutta schifezza da ascoltatore.
DeadMG,

7

Ora è il momento migliore che mai per imparare la porgramming della GUI. Come sapete C ++, consiglierei di guardare QT. Ottima documentazione, vasta base di utenti e molti esempi / tutorial disponibili per imparare.


1
+1 per Qt - @David - Qt ha il suo ambiente di sviluppo chiamato Qt Creator che è autonomo, gratuito e relativamente semplice rispetto ad altri. Qt è potente, intuitivo, esteso, molto ben documentato e con una base utenti ampia e attiva. È facile iniziare e ci sono molti esempi con cui iniziare a giocare e fare le tue cose, il che è un ottimo modo per imparare a proposito. Può essere scaricato qui
Roger Attrill il

Sono propenso a sottovalutare questo. QT incoraggia molte cattive pratiche in C ++ se non sai cosa cercare. - Cosa che non fai, dopo solo un mese di C ++. Inoltre, tocca alcuni aspetti complessi in C ++. Se possibile, inizierei prima la programmazione della GUI in una lingua diversa e mi concentrerei su come ottenere il C ++ giusto.
Konrad Rudolph,

3

Puoi anche iniziare con Microsoft Visual Studio C ++ Express . L'IDE è molto intuitivo e facile da usare (e gratuito!) E sarai in grado di creare le tue prime applicazioni GUI molto rapidamente ... Il che ti aiuterà a concentrarti sulla comprensione delle basi della programmazione basata su eventi , un approccio diverso che dovrai padroneggiare.

Potresti anche iniziare direttamente con la creazione di applicazioni guidate da WPF, ma inizialmente inizierei con Windows Form, che è una tecnologia in meno da comprendere poiché è solo C ++ di base con l'API di Windows Form di Microsoft.


1
In VC ++ Express puoi scrivere la GUI con: 1. API Win32 che è molto vecchia, ingombrante e semplicemente ridicola 2. MFC che è un vecchio mucchio di schifezze 3. WTL che è meglio ma non multipiattaforma. 4. C ++ / CLI che è impopolare, mal supportato (anche senza intellisense) e troppo complicato. Qt è più semplice, multipiattaforma, ha un bel progettista di GUI e ha una grande quantità di utili classi non-GUI che è molto importante in C ++ con la sua piccola libreria standard.
Anton Barkovsky,

0

Forse più adatto a StackOverflow, taggato c ++; ma in ogni caso.

Guarda alcuni di questi su Google; Qt, WxWidgets, TheForgers 'WinApi, Fltk ...

Le GUI non sono così difficili da usare, specialmente una volta che conosci già c ++. Vai con WxWidgets, secondo me; Qt è un po 'troppo complesso per l'apprendimento di un mese. Puoi ritirare Wx in un paio d'ore.


-1

Agli utenti non piacciono le cose complicate. La console è una cosa complicata, ecco perché devi creare applicazioni GUI che siano più intuitive e facili da capire. Questa è la ragione più ovvia che vedo. Puoi guardare gtk o Qt: questi due sono i più popolari.


2
La CLI non è complicata e le GUI per definizione sono PIÙ complicate per l'utente. Sono più accessibili non meno complicati.
Ominus,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.