TL; DR: assertion 'VALID_ITER (parent, tree_store)' failed
, Как мне это исправить?
Я успешно отобразил GtkTreeView в моем приложении со следующим (обрезанным) кодом:
enum { DISPLAY_COLUMN, N_COLUMNS };
GValue comment = G_VALUE_INIT;
GValue amount = G_VALUE_INIT;
GtkTreeIter toplevel, child;
GtkTreeStore *treestore = gtk_tree_store_new(N_COLUMNS, G_TYPE_STRING);
for(int step = 0; step < recipe_count; step++) {
g_value_init(&comment, G_TYPE_STRING);
g_value_set_string(&comment, recipe[step].comment);
gtk_tree_store_append(treestore, &toplevel, NULL);
gtk_tree_store_set_value(treestore, &toplevel,
COMMENT_COLUMN, &comment
);
g_value_init(&amount, G_TYPE_STRING);
g_value_set_string(&amount, recipe[step].amount);
gtk_tree_store_append(treestore, &toplevel, &child);
gtk_tree_store_set_value(treestore, &toplevel,
COMMENT_COLUMN, &amount
);
g_value_unset(&amount);
g_value_unset(&comment);
}
gtk_tree_view_set_model(GTK_TREE_VIEW(app->step_tree),GTK_TREE_MODEL(treestore));
GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes ("Step",
renderer,
"text", DISPLAY_COLUMN,
NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(app->step_tree), column);
Все вышеперечисленное заключено в функцию, так что я могу загрузить новые данные позже. Тем не менее, второй раз я пытаюсь
(recipe_editor:11451): Gtk-CRITICAL **: IA__gtk_tree_store_append: assertion `VALID_ITER (parent, tree_store)' failed
(recipe_editor:11451): Gtk-CRITICAL **: IA__gtk_tree_store_set_value: assertion `VALID_ITER (iter, tree_store)' failed
Я знаю, что это означает, что что-то не так с моими итераторами, но я не уверен, как на самом деле это исправить.
Задача ещё не решена.
Других решений пока нет …