在GtkTreeView中启用中间字符串快速搜索

时间:2014-02-19 15:04:58

标签: c gtk

在GtkTreeView中,有一个内置的搜索功能:

enter image description here

但是,默认情况下,它只匹配字符串的开头。所以“父母”会匹配,但“不是0”则不会。

有没有办法更改默认行为,以便搜索也匹配中间字符串?

2 个答案:

答案 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以小写形式转换所有内容,并比较是否需要此行为。