Здравствуйте! Подскажите, пожалуйста, как правильно очистить содержимое GtkComboBox?
Виджет загружается из xml при помощи GtkBuilder, затем ему устанавливается модель GtkListStore, чтобы поддерживались методы gtk_combo_box_append_text, gtk_combo_box_insert_text, gtk_combo_box_prepend_text, gtk_combo_box_remove_text. Язык программирования - C.gtk_combo_box_remove_text требует индекс записи, но я не нашла способа получить эти самые индексы или хотя бы общее количество записей.
Я бы его просто удалил и создал снова. Почистить можно и так -
gint n_items;/* clear the combo box */
gtk_combo_box_set_active(GTK_COMBO_BOX(wind->my_combo), -1);
n_items = gtk_tree_model_iter_n_children(
gtk_combo_box_get_model(GTK_COMBO_BOX(wind->my_combo)), NULL);
while (n_items-- > 0)
gtk_combo_box_remove_text(GTK_COMBO_BOX(wind->my_combo), 0);http://lists.gnucash.org/pipermail/gnucash-changes/2007-Janu...
>Я бы его просто удалил и создал снова. Почистить можно и такКак ни странно, но после такой чистки у меня иногда оставалось несколько пунктов. Фантастика, но факт.
Я нашла другой способ, ближе подходящий к моему конкретному случаю:
gtk_list_store_clear(GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(w_combobox))));
Действует только в том случае, если в качестве модели используется GtkListStore.
А если удалять и создавать снова - пришлось бы хардкодить кучу всяких параметров, которые сейчас сохранены в xml. Или я чего-то не понимаю.