在GtkTreeView中,有一个内置的搜索功能:
但是,默认情况下,它只匹配字符串的开头。所以“父母”会匹配,但“不是0”则不会。
有没有办法更改默认行为,以便搜索也匹配中间字符串?
答案 0 :(得分:2)
是的,使用gtk_tree_view_set_search_equal_func()
设置进行比较的功能。然后实现一个子字符串搜索功能。
答案 1 :(得分:1)
这是搜索功能:
gboolean
mid_search_func (GtkTreeModel *model, gint column,
const gchar *key, GtkTreeIter *iter,
gpointer search_data)
{
gchar *iter_string = NULL;
gtk_tree_model_get (model, iter, column, &iter_string, -1);
return ! g_strrstr (iter_string, key) != NULL;
}
在树视图中:
gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(tree_view),
(GtkTreeViewSearchEqualFunc) mid_search_func,
gtk_tree_view_get_model(GTK_TREE_VIEW(tree_view), NULL);
此g_strrstr区分大小写,因此请使用g_utf8_strdown以小写形式转换所有内容,并比较是否需要此行为。