在GtkTreeView中間串快速搜索,有一個內置的搜索功能:啓用GtkTreeView
然而,在默認情況下它只能從字符串開始處匹配。所以「父母」會匹配,但「沒有0」不會。
有沒有辦法改變默認行爲,以便搜索匹配中間字符串呢?
在GtkTreeView中間串快速搜索,有一個內置的搜索功能:啓用GtkTreeView
然而,在默認情況下它只能從字符串開始處匹配。所以「父母」會匹配,但「沒有0」不會。
有沒有辦法改變默認行爲,以便搜索匹配中間字符串呢?
是的,使用gtk_tree_view_set_search_equal_func()
來設置比較功能。然後實現一個子字符串搜索功能。
這是搜索功能:
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;
}
而在你的TreeView:
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在小寫改造一切,比較,如果你想要這個行爲。