Gtk,检查GtkTreeView是否为空

时间:2011-12-25 13:06:39

标签: gtk

我有以下代码来查找是否选中了行,选择了哪个行以及哪个文本位于GtkTreeView的行中。代码在密钥释放事件处理程序中。

char *ntext;
if (gtk_tree_selection_get_selected(treeselen, &modelen ,&iteren))
{
    gtk_tree_model_get(modelen, &iteren, cEng, &ntext, -1);
... etc...

当我的视图不为空时,这可以正常工作。但是当列表为空时,我会得到“分段错误”。 我认为在此之前需要检查GtkTreeView是否为空。

怎么做?

实际上,后来我发现如果列表部分填充点击未填充区域也会发生段错误。所以我也需要解决方案。

1 个答案:

答案 0 :(得分:1)

根据您的说明,当您说GtkTreeView 为空时,您的意思是模型(GtkTreeModelGtkListStore或{{3}实施与您的GtkTreeView相关联的数据行已添加但是为空,即未设置数据。在这种情况下,您需要检查gtk_tree_model_get返回的值(假设cEng有效,否则您将在运行程序时收到警告消息)。问题主要在...etc...。只需在NULL之前添加ntext支票即可。

char *ntext;
if (gtk_tree_selection_get_selected(treeselen, &modelen ,&iteren))
{
    gtk_tree_model_get(modelen, &iteren, cEng, &ntext, -1);
    if( ntext == NULL )
    {
       printf("Data is NULL!\n");
       /* Handle this case */
    }
   else
   { 
     .... etc ....
   }
}

这也可能是你按下按钮或释放回调的情况。
希望这有帮助!