如何检查GtkListStore中是否已存在值以避免重复?

时间:2012-11-16 02:11:34

标签: c gtk gtk3

如何检查GtkListStore中是否已存在值以避免重复?动态地,我根据用户数据输入从数据库中获取值,但是如果用户键入与先前键入的单词相同或相似的单词,则它可以返回相同的结果,从而使得{{{{ 1}}。

以下是我目前用于将值添加到GtkListStore中的函数:

GtkListStore

1 个答案:

答案 0 :(得分:1)

您需要迭代列表并查找其中是否存在相同的数据。

struct CListLooupStruct
{
  gbolean b_found;
  struct al_t *l;
}; 

gbolean search_c_list_func(GtkTreeModel *model, 
                           GtkTreePath *path, 
                           GtkTreeIter *iter, 
                           gpointer data)
{
   gchar name[MAX_NAME_LENGTH];
   CListLooupStruct* lookup = (CListLooupStruct*)data;
   gtk_tree_model_get (model, iter, 0, &name, -1)
   if (/*compare name to lookup->name */)
   { 
       lookup->b_found = TRUE;
       return TRUE;
   }
   return FALSE;
}

update_c_list()功能中,您需要:

...
CListLooupStruct c_list_lookup = { FALSE, new_list };    
gtk_tree_model_foreach(completionmodel, search_c_list_func, &c_list_lookup);
if (/* magic to avoid double */ c_list_lookup.b_found == FALSE )
...