从vcontainer中摧毁按钮

时间:2015-10-01 16:24:56

标签: c linux gtk

我有一个vcontainer,其中填充了gtk_combo_box和几个按钮 我想只在vcontainer中清除按钮,我尝试了以下代码:

GList *vcontainer_children, *iter;
  vcontainer_children = gtk_container_get_children(GTK_CONTAINER(container));
  for(iter = vcontainer_children; iter != NULL; iter = g_list_next(iter))
  {
    if (gtk_button_get_label(iter));
      gtk_widget_destroy(GTK_WIDGET(iter->data));
  }

代码清除vcontainer中的所有小部件,一种可能性是将if替换为检查iter是否为按钮的函数,但我不知道如何完成

1 个答案:

答案 0 :(得分:1)

    if (gtk_button_get_label(iter));

最后的分号是错误的;这与说

相同
    if (gtk_button_get_label(iter))
        /* do nothing */;

因此gtk_widget_destroy()总是运行。

只需删除分号或切换为使用大括号(或其他一些我没想到的选项)。

由于两个原因你的病情也是错误的。首先,它使用iter代替iter->data。其次,如果小部件不是按钮,它将会崩溃和燃烧。幸运的是,您可以使用宏GTK_IS_BUTTON()

    if (GTK_IS_BUTTON(iter->data))
        gtk_widget_destroy(GTK_WIDGET(iter->data));