2010-12-27 32 views
1

GTK + 2とglade 3を学習しています.Gtk Builderからロードされたコンボボックスコンポーネントにテキストを追加しようとしています。c gtk + -2 glade3:Gtk Builderからロードされたコンボボックスにテキストを追加する

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

それは私がそのためGtkListStoreを使用する必要があることsemesが、私は見つけることができません:私はgtk_combo_box_append_textラインに次の重大なエラーが発生します

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"); 

iは、次のコードを使用しますそれを使用してコンボボックスに追加する方法です。何か案は ?

更新

私は次のことをやってみました:

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); 

が、アプリケーションでのコンボボックスのリストが空のままです。

ありがとうございました!

答えて

2

あなたはそれがテキストをレンダリングするために得るためにあなたのコンボボックスにGtkCellRendererを追加する必要があります。

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

まず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); 
関連する問題