我有一个带有. _ GtkTreeView
每次选择一行时,都会调用一个回调。此回调应检索选定的行并以某种方式处理其数据。
我的应用程序有时必须选择此树视图本身的某些行:
// Selecting a line
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(model), &iter, "0");
GtkTreeSelection *selection =
gtk_tree_view_get_selection(GTK_TREE_VIEW(tree_view));
gtk_tree_selection_select_iter(selection, &iter);
当我必须选择顶层线时,这很有效,即直接从根下降的线。但是,如果我尝试选择一个子行(例如,第三行的第一个子行),我在回调函数中遇到错误(此处为 sscce 代码,仅在第 42 行更改):
// Selecting a line
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(model), &iter, "2:0");
GtkTreeSelection *selection =
gtk_tree_view_get_selection(GTK_TREE_VIEW(tree_view));
gtk_tree_selection_select_iter(selection, &iter);
错误是以下警告,后跟段错误:
(treetest:1843): Gtk-CRITICAL **: gtk_tree_store_get_path: 断言 `iter->user_data != NULL' 失败
(treetest:1843):Gtk-CRITICAL **:IA__gtk_tree_model_get_string_from_iter:断言“路径!= NULL”失败
此外,当我用鼠标选择同一行时,这个错误永远不会发生。
怎么会这样?选择的路径"2:0"
是有效的,但从选择返回的迭代器不是,所以我认为该行没有被选择。为什么?