我正在学习GTK + 2和glade 3.我正在尝试将文本添加到我从Gtk Builder加载的组合框组件中。
我使用以下代码:
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");
我在gtk_combo_box_append_text行上收到以下严重错误:
Gtk-CRITICAL **: IA__gtk_combo_box_append_text: assertion `GTK_IS_LIST_STORE (combo_box->priv->model)' failed
我认为我需要使用GtkListStore,但我找不到使用它的方法并将其添加到组合框中。任何想法?
我尝试了以下操作:
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);
但应用程序中的组合框列表仍为空。
谢谢!
答案 0 :(得分: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 );
答案 1 :(得分: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);