URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8604
[ Назад ]

Исходное сообщение
"Как правильно очистить GtkComboBox?"

Отправлено marsianna4ka , 29-Янв-10 16:46 
Здравствуйте! Подскажите, пожалуйста, как правильно очистить содержимое 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 требует индекс записи, но я не нашла способа получить эти самые индексы или хотя бы общее количество записей.


Содержание

Сообщения в этом обсуждении
"Как правильно очистить GtkComboBox?"
Отправлено ACCA , 29-Янв-10 21:31 
Я бы его просто удалил и создал снова. Почистить можно и так -


    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...


"Как правильно очистить GtkComboBox?"
Отправлено marsianna4ka , 29-Янв-10 22:25 
>Я бы его просто удалил и создал снова. Почистить можно и так

Как ни странно, но после такой чистки у меня иногда оставалось несколько пунктов. Фантастика, но факт.

Я нашла другой способ, ближе подходящий к моему конкретному случаю:

gtk_list_store_clear(GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(w_combobox))));

Действует только в том случае, если в качестве модели используется GtkListStore.

А если удалять и создавать снова - пришлось бы хардкодить кучу всяких параметров, которые сейчас сохранены в xml. Или я чего-то не понимаю.