SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
*                      http://corsogtk.chipsy.it/




    Disporre gli oggetti
*
* Dato che inserendo tanti oggetti nella finestra
 uno dopo l’altro quello che otterremo sarebbe
 una disposizione totalmente insensata e brutta
 da vedere, son nati per questo vari widget il
 cui unico scopo è aiutarci a disporre gli
 elementi :

* I BOX : HBOX e VBOX servono per disporre al
  loro interno i widget in maniera ordinata e in
  una delle due direzioni scelte (orizzontale o
  verticale)
* FIXED, dentro questo elemento possiamo
  mettere dei widget in delle coordinate precise,
  possiamo disporli anche uno sopra l’altro, per
  creare un gioco è il migliore.
*
* Per creare questi 2 widget dobbiamo usare :
mio_h_oggetto = gtk_hbox_new(gboolean homogeneous,
gint spacing);
mio_v_oggetto = gtk_vbox_new(gboolean homogeneous,
gint spacing);


Il primo parametro è se vogliamo che gli oggetti al suo interno siano
disposti in maniera omogenea.
Il secondo parametro è lo spazio che deve esserci tra un oggetto e
l’altro.


Dentro questi widget possiamo metterci tutti i widget che vogliamo e
anche altri hbox o vbox.
Volendo si potrebbe benissimo creare una tabella di hbox e vbox, ma
non avrebbe senso visto che esiste già il widget table.
Dopo averli creati sicuramente vorremmo inserirci del contenuto dentro.
Per fare questo dobbiamo usare le funzioni (identiche in entrambi) :

gtk_box_pack_start(GTK_BOX(HVBOX), widget, espandi, riempi, 0);
gtk_box_pack_end(GTK_BOX(HVBOX), widget, espandi, riempi, 0);


La prima funzione inserisce un widget all’inizio del contenitore, mentre la
seconda lo inserisce alla fine.
1. Il primo parametro è il contenitore in cui vogliamo mettere il widget,
   deve essere fatto il cast a GTK_BOX visto che è il padre dei due
   fratellini HBOX e VBOX.
2. Il secondo parametro è il widget che vogliamo mettere nel
   contenitore.
3. Il terzo parametro è un gboolean (TRUE / FALSE) e indica se vogliamo
   che l’elemento riempia il contenitore in larghezza nelle VBOX e in
   altezza nelle HBOX
4. Il quarto parametro che funziona solo se il terzo è TRUE, riempie
   anche nell’altra dimensione
5. Il quinto parametro è quanto spazio deve esserci tra il widget e il
   contenitore (in ogni dimensione)
* In questa immagine il primo bottone è
stato inserito con gli argomenti TRUE,FALSE
gli altri con gli argomenti
TRUE,TRUE
*
* Questo è il componente che più è consigliato per la
 realizzazione di giochi in cui abbiamo degli oggetti in
 movimento.
Per crearlo dobbiamo usare :
contenitore_fixed = gtk_fixed_new();


* E per inserire oggetti al suo interno :
gtk_fixed_put(contenitore_fixed,widget,x,y);

Il primo parametro è il contenitore in cui inserire il widget,
Il secondo il widget da inserire
E il terzo e quarto le coordinate.
Analogamente per spostare un widget :

gtk_fixed_move(contenitore_fixed,widget,x,y);
*
* Le tabelle, beh non c’è bisogno di spiegare cosa sono,
  vediamo un po’ come usarle :
Crearle :

tabella = gtk_table_new(righe, colonne, OMOGENEA);


Primo e secondo parametro son il numero di righe e colonne.
Il terzo parametro è se deve essere omogenea, ovvero tutte le
righe con la stessa altezza e tutte le colonne con la stessa
larghezza.

Per inserire :
gtk_table_attach_defaults(tabella, widget, colonna_a,
colonna_b, riga_a, riga_b );


Primo e secondo parametro son contenitore e widget da
inserire.
Terzo e quarto parametro tra quali colonne deve stare
(si potete mettere un widget che occupa anche più di
una colonna)
Quinto e sesto tra quali righe.
* Ultima cosa sulle tabelle :
Se vogliamo impostare lo spazio che deve esserci tra una
riga e l’altra usiamo :
gtk_table_set_row_spacings(tabella, 2);


Tra una riga e l’altra :
gtk_table_set_col_spacings(tabella, 2);
*
#include <gtk/gtk.h>



int main(int argc,char *argv[]) {
    GtkWidget *win,*hbox,*vbox;
    //Inizializzo le GTK
    gtk_init (&argc, &argv);
    //Creo la finestra
    win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    //Creo un vbox
    vbox = gtk_vbox_new(TRUE, 20);
    //Inserisco dentro il vbox una label, le vedremmo più avanti
    gtk_box_pack_start(GTK_BOX(vbox), gtk_label_new("Sopra"), TRUE, TRUE, 0);
    //Creo un hbox
    hbox = gtk_hbox_new(TRUE, 50);
    //Inserisco dentro l'hbox due label, le vedremmo più avanti
    gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new("Sinistra"), TRUE, TRUE, 0);
    gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new("Destra"), TRUE, TRUE, 0);
    //Inserisco dentro il vbox, l'hbox
    gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
    //Inserisco il vbox dentro la finestra
    gtk_container_add(GTK_CONTAINER(win),vbox);
    //Mostro la finestra e tutto il suo contenuto
    gtk_widget_show_all(win);
    //Avvio il loop principale delle GTK



                                                                          *
    gtk_main ();
    return 0;
}
#include <gtk/gtk.h>



int main(int argc,char *argv[]) {
    GtkWidget *win,*tabella;
    int i,j;
    char s[4][4][2] = {{"7","8","9","+"},{"4","5","6","-
"},{"1","2","3","*"},{".","0","%","/"}};
    //Inizializzo le GTK
    gtk_init (&argc, &argv);
    //Creo la finestra
    win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    //Creo una tabella 4x4
    tabella = gtk_table_new(4, 4, TRUE);
    //La riempio con dei label
    for (i=0;i<4;i++)
        for (j=0;j<4;j++)
             gtk_table_attach_defaults(tabella,
gtk_button_new_with_label(s[j][i]), i, i+1, j, j+1 );
    //Inserisco la tabella dentro la finestra
    gtk_container_add(GTK_CONTAINER(win),tabella);
    //Mostro la finestra e tutto il suo contenuto
    gtk_widget_show_all(win);
    //Avvio il loop principale delle GTK



                                                           *
    gtk_main ();
    return 0;
}
#include <gtk/gtk.h>



int main(int argc,char *argv[]) {
    GtkWidget *win,*fixed;
    int i;
    //Inizializzo le GTK
    gtk_init (&argc, &argv);
    //Creo la finestra
    win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    //Imposto le dimensione della finestra
    gtk_widget_set_size_request (win,640,480);
    //Creo un fixed
    fixed = gtk_fixed_new();
    //Ci metto dei label in posizioni a caso
    for (i=0;i<10;i++)

gtk_fixed_put(fixed,gtk_label_new("Ciao!"),rand()%640,rand()%480);
    //Inserisco il fixed dentro la finestra
    gtk_container_add(GTK_CONTAINER(win),fixed);
    //Mostro la finestra e tutto il suo contenuto
    gtk_widget_show_all(win);
    //Avvio il loop principale delle GTK
    gtk_main ();



                                                                     *
    return 0;
}

Weitere ähnliche Inhalte

Was ist angesagt?

Qt Lezione4 Parte1: creare un custom widget plugin
Qt Lezione4 Parte1: creare un custom widget pluginQt Lezione4 Parte1: creare un custom widget plugin
Qt Lezione4 Parte1: creare un custom widget pluginPaolo Sereno
 
Qt Lezione0: uso del C++ per scrivere applicazioni Qt
Qt Lezione0: uso del C++ per scrivere applicazioni QtQt Lezione0: uso del C++ per scrivere applicazioni Qt
Qt Lezione0: uso del C++ per scrivere applicazioni QtPaolo Sereno
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROIDPaolo Tosato
 
Qt Lezione1: Creare una dialog Window con Qt Creator in 10 semplici passi
Qt Lezione1: Creare una dialog Window con Qt Creator  in 10 semplici passiQt Lezione1: Creare una dialog Window con Qt Creator  in 10 semplici passi
Qt Lezione1: Creare una dialog Window con Qt Creator in 10 semplici passiPaolo Sereno
 
Qt Lezione2: Creare un’applicazione con Qt Creator in pochi semplici passi
Qt Lezione2: Creare un’applicazione con Qt Creator in pochi semplici passiQt Lezione2: Creare un’applicazione con Qt Creator in pochi semplici passi
Qt Lezione2: Creare un’applicazione con Qt Creator in pochi semplici passiPaolo Sereno
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROIDPaolo Tosato
 
Che cosa è il Qt Framework
Che cosa è il Qt FrameworkChe cosa è il Qt Framework
Che cosa è il Qt FrameworkPaolo Sereno
 
Javascript - 7 | WebMaster & WebDesigner
Javascript - 7 | WebMaster & WebDesignerJavascript - 7 | WebMaster & WebDesigner
Javascript - 7 | WebMaster & WebDesignerMatteo Magni
 

Was ist angesagt? (9)

Qt Lezione4 Parte1: creare un custom widget plugin
Qt Lezione4 Parte1: creare un custom widget pluginQt Lezione4 Parte1: creare un custom widget plugin
Qt Lezione4 Parte1: creare un custom widget plugin
 
Qt Lezione0: uso del C++ per scrivere applicazioni Qt
Qt Lezione0: uso del C++ per scrivere applicazioni QtQt Lezione0: uso del C++ per scrivere applicazioni Qt
Qt Lezione0: uso del C++ per scrivere applicazioni Qt
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROID
 
Qt Lezione1: Creare una dialog Window con Qt Creator in 10 semplici passi
Qt Lezione1: Creare una dialog Window con Qt Creator  in 10 semplici passiQt Lezione1: Creare una dialog Window con Qt Creator  in 10 semplici passi
Qt Lezione1: Creare una dialog Window con Qt Creator in 10 semplici passi
 
Qt Lezione2: Creare un’applicazione con Qt Creator in pochi semplici passi
Qt Lezione2: Creare un’applicazione con Qt Creator in pochi semplici passiQt Lezione2: Creare un’applicazione con Qt Creator in pochi semplici passi
Qt Lezione2: Creare un’applicazione con Qt Creator in pochi semplici passi
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROID
 
Che cosa è il Qt Framework
Che cosa è il Qt FrameworkChe cosa è il Qt Framework
Che cosa è il Qt Framework
 
Javascript - 7 | WebMaster & WebDesigner
Javascript - 7 | WebMaster & WebDesignerJavascript - 7 | WebMaster & WebDesigner
Javascript - 7 | WebMaster & WebDesigner
 
Introduzione a Latex
Introduzione a LatexIntroduzione a Latex
Introduzione a Latex
 

C(99) gtk 02 - disporre gli oggetti

  • 1. * http://corsogtk.chipsy.it/ Disporre gli oggetti
  • 2. *
  • 3. * Dato che inserendo tanti oggetti nella finestra uno dopo l’altro quello che otterremo sarebbe una disposizione totalmente insensata e brutta da vedere, son nati per questo vari widget il cui unico scopo è aiutarci a disporre gli elementi : * I BOX : HBOX e VBOX servono per disporre al loro interno i widget in maniera ordinata e in una delle due direzioni scelte (orizzontale o verticale) * FIXED, dentro questo elemento possiamo mettere dei widget in delle coordinate precise, possiamo disporli anche uno sopra l’altro, per creare un gioco è il migliore.
  • 4. *
  • 5. * Per creare questi 2 widget dobbiamo usare : mio_h_oggetto = gtk_hbox_new(gboolean homogeneous, gint spacing); mio_v_oggetto = gtk_vbox_new(gboolean homogeneous, gint spacing); Il primo parametro è se vogliamo che gli oggetti al suo interno siano disposti in maniera omogenea. Il secondo parametro è lo spazio che deve esserci tra un oggetto e l’altro. Dentro questi widget possiamo metterci tutti i widget che vogliamo e anche altri hbox o vbox. Volendo si potrebbe benissimo creare una tabella di hbox e vbox, ma non avrebbe senso visto che esiste già il widget table.
  • 6. Dopo averli creati sicuramente vorremmo inserirci del contenuto dentro. Per fare questo dobbiamo usare le funzioni (identiche in entrambi) : gtk_box_pack_start(GTK_BOX(HVBOX), widget, espandi, riempi, 0); gtk_box_pack_end(GTK_BOX(HVBOX), widget, espandi, riempi, 0); La prima funzione inserisce un widget all’inizio del contenitore, mentre la seconda lo inserisce alla fine. 1. Il primo parametro è il contenitore in cui vogliamo mettere il widget, deve essere fatto il cast a GTK_BOX visto che è il padre dei due fratellini HBOX e VBOX. 2. Il secondo parametro è il widget che vogliamo mettere nel contenitore. 3. Il terzo parametro è un gboolean (TRUE / FALSE) e indica se vogliamo che l’elemento riempia il contenitore in larghezza nelle VBOX e in altezza nelle HBOX 4. Il quarto parametro che funziona solo se il terzo è TRUE, riempie anche nell’altra dimensione 5. Il quinto parametro è quanto spazio deve esserci tra il widget e il contenitore (in ogni dimensione)
  • 7. * In questa immagine il primo bottone è stato inserito con gli argomenti TRUE,FALSE gli altri con gli argomenti TRUE,TRUE
  • 8. *
  • 9. * Questo è il componente che più è consigliato per la realizzazione di giochi in cui abbiamo degli oggetti in movimento. Per crearlo dobbiamo usare : contenitore_fixed = gtk_fixed_new(); * E per inserire oggetti al suo interno : gtk_fixed_put(contenitore_fixed,widget,x,y); Il primo parametro è il contenitore in cui inserire il widget, Il secondo il widget da inserire E il terzo e quarto le coordinate. Analogamente per spostare un widget : gtk_fixed_move(contenitore_fixed,widget,x,y);
  • 10. *
  • 11. * Le tabelle, beh non c’è bisogno di spiegare cosa sono, vediamo un po’ come usarle : Crearle : tabella = gtk_table_new(righe, colonne, OMOGENEA); Primo e secondo parametro son il numero di righe e colonne. Il terzo parametro è se deve essere omogenea, ovvero tutte le righe con la stessa altezza e tutte le colonne con la stessa larghezza. Per inserire : gtk_table_attach_defaults(tabella, widget, colonna_a, colonna_b, riga_a, riga_b ); Primo e secondo parametro son contenitore e widget da inserire. Terzo e quarto parametro tra quali colonne deve stare (si potete mettere un widget che occupa anche più di una colonna) Quinto e sesto tra quali righe.
  • 12. * Ultima cosa sulle tabelle : Se vogliamo impostare lo spazio che deve esserci tra una riga e l’altra usiamo : gtk_table_set_row_spacings(tabella, 2); Tra una riga e l’altra : gtk_table_set_col_spacings(tabella, 2);
  • 13. *
  • 14. #include <gtk/gtk.h> int main(int argc,char *argv[]) { GtkWidget *win,*hbox,*vbox; //Inizializzo le GTK gtk_init (&argc, &argv); //Creo la finestra win = gtk_window_new(GTK_WINDOW_TOPLEVEL); //Creo un vbox vbox = gtk_vbox_new(TRUE, 20); //Inserisco dentro il vbox una label, le vedremmo più avanti gtk_box_pack_start(GTK_BOX(vbox), gtk_label_new("Sopra"), TRUE, TRUE, 0); //Creo un hbox hbox = gtk_hbox_new(TRUE, 50); //Inserisco dentro l'hbox due label, le vedremmo più avanti gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new("Sinistra"), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new("Destra"), TRUE, TRUE, 0); //Inserisco dentro il vbox, l'hbox gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0); //Inserisco il vbox dentro la finestra gtk_container_add(GTK_CONTAINER(win),vbox); //Mostro la finestra e tutto il suo contenuto gtk_widget_show_all(win); //Avvio il loop principale delle GTK * gtk_main (); return 0; }
  • 15. #include <gtk/gtk.h> int main(int argc,char *argv[]) { GtkWidget *win,*tabella; int i,j; char s[4][4][2] = {{"7","8","9","+"},{"4","5","6","- "},{"1","2","3","*"},{".","0","%","/"}}; //Inizializzo le GTK gtk_init (&argc, &argv); //Creo la finestra win = gtk_window_new(GTK_WINDOW_TOPLEVEL); //Creo una tabella 4x4 tabella = gtk_table_new(4, 4, TRUE); //La riempio con dei label for (i=0;i<4;i++) for (j=0;j<4;j++) gtk_table_attach_defaults(tabella, gtk_button_new_with_label(s[j][i]), i, i+1, j, j+1 ); //Inserisco la tabella dentro la finestra gtk_container_add(GTK_CONTAINER(win),tabella); //Mostro la finestra e tutto il suo contenuto gtk_widget_show_all(win); //Avvio il loop principale delle GTK * gtk_main (); return 0; }
  • 16. #include <gtk/gtk.h> int main(int argc,char *argv[]) { GtkWidget *win,*fixed; int i; //Inizializzo le GTK gtk_init (&argc, &argv); //Creo la finestra win = gtk_window_new(GTK_WINDOW_TOPLEVEL); //Imposto le dimensione della finestra gtk_widget_set_size_request (win,640,480); //Creo un fixed fixed = gtk_fixed_new(); //Ci metto dei label in posizioni a caso for (i=0;i<10;i++) gtk_fixed_put(fixed,gtk_label_new("Ciao!"),rand()%640,rand()%480); //Inserisco il fixed dentro la finestra gtk_container_add(GTK_CONTAINER(win),fixed); //Mostro la finestra e tutto il suo contenuto gtk_widget_show_all(win); //Avvio il loop principale delle GTK gtk_main (); * return 0; }