enum { COLUMN_ID, N_COLUMNS }; GtkListStore *store; GtkTreeIter iter; GtkWidget *view; GtkCellRenderer *renderer; GtkTreeSelection *selection; store =gtk_list_store_new( N_COLUMNS, G_TYPE_INT); // gtk_list_store_clear( store); gtk_list_store_append( store, &iter); gtk_list_store_set( store, &iter, COLUMN_ID, ( guint) some_int_value, -1); /* ... */ view =gtk_tree_view_new_with_model( GTK_TREE_MODEL( store)); renderer =gtk_cell_renderer_text_new( ); gtk_tree_view_insert_column_with_attributes( GTK_TREE_VIEW( view), -1, "Id", renderer, "text", COLUMN_ID, NULL); selection = gtk_tree_view_get_selection( GTK_TREE_VIEW( view)); gtk_tree_selection_set_mode( selection, GTK_SELECTION_SINGLE); g_signal_connect( G_OBJECT( selection), "changed", G_CALLBACK( selection_changed_cb), NULL); /* ... */ static void selection_changed_cb( GtkTreeSelection *selection, gpointer data) { GtkTreeIter iter; GtkTreeModel *model; int id; if( gtk_tree_selection_get_selected( selection, &model, &iter)) { gtk_tree_model_get( model, &iter, COLUMN_ID, &id, -1); /* do something w/id... */ } }