2010-12-27 6 views
1

Ich lerne GTK + 2 und Glade 3. Ich versuche, einen Text zu einer Combobox-Komponente ich geladen von Gtk Builder hinzuzufügen.c gtk + -2 glade3: Hinzufügen von Text zu einer Combobox geladen von Gtk Builder

Ich verwende den folgenden Code ein:

output_right_combobox = GTK_WIDGET(gtk_builder_get_object(builder,"output_right_combobox")); 
gtk_combo_box_append_text (GTK_COMBO_BOX(output_left_combobox),"aaa"); 

ich die folgenden kritischen Fehler auf der gtk_combo_box_append_text Linie erhalten:

Gtk-CRITICAL **: IA__gtk_combo_box_append_text: assertion `GTK_IS_LIST_STORE (combo_box->priv->model)' failed 

Es semes, dass ich GtkListStore dafür verwenden müssen, aber ich kann nicht finden eine Möglichkeit, es zu benutzen und es der Combobox hinzuzufügen. irgendwelche Ideen ?

Update

Ich habe versucht, die folgenden Aktionen ausführen:

GtkTreeIter iter; 
GtkListStore *store = gtk_list_store_new (1, G_TYPE_STRING); 
gtk_list_store_append(store, &iter); 
gtk_list_store_set(store, &iter, 0, "foo", -1); 

gtk_combo_box_set_model (GTK_COMBO_BOX(output_right_combobox), (GtkTreeModel *)store); 

aber die Combobox Liste in der Anwendung ist noch leer.

danke!

Antwort

2

Sie benötigen einen GtkCellRenderer zu Ihrem Combobox hinzufügen, um es den Text zu machen zu erhalten:

gtk_combo_box_set_model (GTK_COMBO_BOX (output_right_combobox), GTK_TREE_MODEL(store)); 

GtkCellRenderer * cell = gtk_cell_renderer_text_new(); 
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(output_right_combobox), cell, TRUE); 
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(output_right_combobox), cell, "text", 0, NULL); 
0

zuerst die Liste bevölkert dann sichtbar machen mit GtkCellRenderer:

GtkTreeIter iter; 
GtkListStore *store = gtk_list_store_new(1,G_TYPE_STRING); 
GtkCellRenderer *cell = gtk_cell_renderer_text_new(); 

gtk_list_store_append(store,&iter); 
gtk_list_store_set(store,&iter,0,"1st list item",-1); 
gtk_list_store_append(store,&iter); 
gtk_list_store_set(store,&iter,0,"2nd list item",-1); 

gtk_combo_box_set_model(GTK_COMBO_BOX(my_combo_box), GTK_TREE_MODEL(store)); 
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(my_combo_box), cell, "text",0,NULL); 
gtk_combo_box_set_active(GTK_COMBO_BOX(my_combo_box),0);