Guida Gtk+ a puntate ( III parte )
Ed eccoci arrivati alla terza parte, siamo giunti all’inizio di questo fantastico mondo e dopo aver dato un primo sguardo generale è ora di salutarlo
E come si può salutare un mondo se non con un bellissimo Hello World ?
Iniziamo.
Hello Gtk+ World!
In questo primo capitolo vedremo come creare piccole e minimali interfacce grafiche, quali sono i widget più comuni e come utilizzarli e tante altre piccole cose che si approfondiranno poi nei capitoli seguenti.
In particolare vedremo come:
- Creare una finestra
- Inserirci dei widget
- Collegare delle funzioni a determinati eventi
- Funziona la logica delle Gtk+
Iniziamo subito con un piccolo codice di esempio:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <gtk/gtk.h> int main(int argc, char *argv[]) { GtkWidget *window; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size (GTK_WINDOW(window), 250, 250); gtk_window_set_title (GTK_WINDOW(window), "Ciao Mondo delle Gtk+!"); gtk_widget_show (window); gtk_main (); return 0; } |
Questo codice come si potrà notare una volta compilato e lanciato produrrà una finestra di questo tipo:
Una cosa che si può notare fin da subito è che se si fa click sul pulsante per chiudere la finestra, l’applicazione resta ancora in esecuzione, ciò avviene perché ancora non gestiamo l’evento di chiusura della finestra, a breve lo vedremo. Prima di tutto però analizziamo il codice.
Nella prima riga troviamo la classica inclusione della libreria gtk, che a sua volta include le glib, pango e altre come sue sotto-librerie e in più include anche la libreria standard di input\output, stdio.h.
Dopodiché vediamo la funzione gtk_init che inizializza l’ambiente gtk ed esamina eventuali argomenti da riga di comando, ad esempio se si lancia l’applicazione con argomento –sync, esso verrà intercettato da gtk_init che provvederà a visualizzare eventuali errori ed eventi in modo sincronizzato con l’applicazione senza ritardi dovuti ad altre operazioni.
Proseguendo troviamo l’inizializzazione del widget ‘window’ che sarà appunto la nostra finestra.
Per crearlo abbiamo dovuto utilizzare la funzione gtk_window_new che riceve come parametro il tipo di finestra, nel nostro caso abbiamo utilizzato GTK_WINDOW_TOPLEVEL che posiziona la nuova finestra appena creata sopra tutte quelle precedenti. Oltre a questo stile però c’è anche GTK_WINDOW_POPUP che ignora il window manager e quindi non visualizza i bordi della finestra.
Dopo aver inizializzato la finestra, gli abbiamo dato le dimensioni, per far ciò abbiamo utilizzato la funzione gtk_window_set_default_size che riceve come primo argomento una GtkWindow, ma avendo noi un GtkWidget per trasformarla in GtkWindow utilizziamo la macro GTK_WINDOW che convertirà il tipo in quello desiderato, come secondo argomento invece riceve la larghezza e l’altezza. Subito dopo impostiamo il titolo e infine visualizziamo la finestra inizializzata.
Alla fine del programma troviamo gtk_main che evita di far chiudere il programma, senza di esso come viene visualizzata la finestra il programma si chiude e con esso si eliminano anche tutti i widget creati.
A questo punto possiamo iniziare a dare uno sguardo generale a come funziona un programma gtk, sono pochi punti:
- Si inizializza l’ambiente
- Si creano i widget
-
- Gli si stabiliscono i vari attributi
- Si visualizzano
- Si aspetta un qualche evento senza uscire dal programma
Tutto qui
La parte che può ritornare difficile da capire invece è il nome delle funzioni, ma non è niente di particolarmente difficile, la stragrande maggior parte delle funzioni utilizza questa logica:
libreria_tipo_azione → gtk_window_set_title
→ gtk_widget_show
→ …
Fine Terza Parte
Per non riempire troppo la testa tutta in una volta, rimandiamo la vera fine alla prossima parte.

Commenti recenti