0

我想填充一个 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);

我确信我的功能没有任何问题。我得到一个分段错误?为什么?我到底能做些什么来解决它?

4

1 回答 1

0

您正在发生段错误,因为您正在混合GList已弃用 的 GtkList列表函数。

旧的GtkList已弃用,与GList不同。注意:

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);

解决方案:只使用GListg_list...功能,避免弃用GtkListgtk_list...对应。GList并且g_list...被设计用来替换早期的类型和函数,并且在你的 Gtk+2 应用程序中编译时可以无缝地工作。

于 2019-03-01T02:22:42.917 回答