我想填充一个gtk2 gtk_list,我在一个函数中尝试这段代码:
GList (*List) = NULL;
GtkWidget (*ListBox) = gtk_list_new();
List = g_list_prepend(List, "List Item");
gtk_container_add(GTK_CONTAINER(Vbox), ListBox);
gtk_list_prepend_items(GTK_LIST(ListBox), List);
我确信我的功能没有任何问题。我得到了分段错误?为什么?我究竟能做些什么来解决它?
您是segfaulting,因为您正在混合GList和已弃用的GtkList列表函数。
GList (*List) = NULL;
...
List = g_list_prepend(List, "List Item");
/* now you switch to gtk_list_... and GtkList */
gtk_container_add(GTK_CONTAINER(Vbox), ListBox);
gtk_list_prepend_items(GTK_LIST(ListBox), List);
解决方案:只需使用GList
和g_list...
函数,并避免弃用的GtkList
和gtk_list...
对应物。 GList
和g_list...
旨在取代早期的类型和功能,并在您的Gtk + 2应用程序中编译时无缝工作。