Strumenti Utente

Strumenti Sito


Barra laterale

programmazione:vala:gtktreeview

Usare il widget Gtk.Treeview in Vala

Autore: Fabio Di Matteo
Ultima revisione: 17/12/2015 - 12:34

Di seguito viene mostrato come usare il treeview associato a una semplice struttura di tipo treeview.

Il codice

treeview.vala

using Gtk;
 
public class TreeViewSample : Window {
 
	TreeView view ;
 
    public TreeViewSample () {
        this.title = "Esempio utilizzo TreeView";
        set_default_size (350, 200);
        view = new TreeView ();
        setup_treeview (view);
        add (view);
        this.destroy.connect (Gtk.main_quit);
    }
 
    private void setup_treeview (TreeView view) {
 
        /* Preparo il liststore che conterra' i dati e il treeview che
         * li mostrera'
         */
 
        //Struttura delle colonne per il modello dei dati
        var listmodel = new Gtk.ListStore (4, typeof (string), typeof (string),
                                          typeof (string), typeof (string));
 
        //Attribuiamo al treeview il modello (un liststore)
        view.set_model (listmodel);
 
        //Inseriamo  e formattiamo le colonne del del treeview
        view.insert_column_with_attributes (-1, "Nome", new CellRendererText (), "text", 0);
        view.insert_column_with_attributes (-1, "Cognome", new CellRendererText (), "text", 1);
 
        var cell = new CellRendererText (); //l'ultima colonna puo' essere formattata con i colori
        cell.set ("foreground_set", true);
        view.insert_column_with_attributes (-1, "Email", cell, "text", 2, "foreground", 3);
 
        /*Adesso aggiungiamo i dati. Faremo uso di un iteratore, una sorta di contatore/segnaposto
         * per le righe (iter). I dati si aggiungono al liststore e automaticamente vengono mostrati sul
         * treeview
         * */
 
        TreeIter iter;
        listmodel.append (out iter);
        listmodel.set (iter, 0, "Fabio", 1, "Di Matteo", 2, "fa@mail.com", 3, "blue");
 
        listmodel.append (out iter);
        listmodel.set (iter, 0, "Rita", 1, "Bella", 2, "mail@rita.com", 3, "blue");
 
        listmodel.append (out iter);
        listmodel.set (iter, 0, "Chester", 1, "Cane", 2, "chester@mail.com", 3, "blue");
 
        listmodel.append (out iter);
        listmodel.set (iter, 0, "Mone'", 1, "Gatto", 2, "gatto@mail.com", 3, "blue");
 
 
 
        //Al click su una riga prelevo il testo della stessa
        view.get_selection().changed.connect(()=>{
 
				//Prelevo la selezione(singola riga)
				Gtk.TreeSelection selection= view.get_selection();
				selection.set_mode(SelectionMode.SINGLE);
 
				//Struttura d'appoggio per prelevare i dati(un'altra...!)
				Gtk.TreeModel model;
 
				if (selection.get_selected (out model, out iter)) 
				{
					//Le stringhe dei campi che prelevero' dalla selezione
					string Nome, Cognome, Email;
 
					//Prendo il contenuto della colonna 0 e lo metto nella 
					//variabile "Nome". Faccio lo stesso con le altre col.
					model.get (iter, 0, out Nome);
					model.get (iter, 1, out Cognome);
					model.get (iter, 2, out Email);
 
					//Stampo la riga selezionata sul titolo della finestra
					this.set_title(Nome+" "+Cognome+" "+Email);
				}
 
			});
 
 
 
 
    }
 
    public static int main (string[] args) {
        Gtk.init (ref args);
 
        var sample = new TreeViewSample ();
        sample.show_all ();
        Gtk.main ();
 
        return 0;
    }
}

Compilare con :

valac --pkg gtk+-2.0 treeview.vala -o treeview-gtk2

programmazione/vala/gtktreeview.txt · Ultima modifica: 18/04/2018 - 15:48 (modifica esterna)