gpt4 book ai didi

c - GtkListStore 添加(段错误)

转载 作者:太空宇宙 更新时间:2023-11-04 08:26:26 26 4
gpt4 key购买 nike

我正在尝试将 GSList 传递给 GtkListStore 以显示给用户。但是当我将值设置为 GtkListStore 时,它​​只会给我段错误。我真的不知道问题出在哪里。我测试了列表,所以它不是空的,并且它有 gchar vector ,正如预期的那样。

enum {
COLUMN_FILENAME,
NUM_COLUMNS
};

GtkBuilder *builder;

void add_to_source_list(gpointer filename, gpointer list_store) {
GtkTreeIter iterator;
gtk_list_store_append(GTK_LIST_STORE(list_store), &iterator);

// When the program reaches this line it gives segmentation fault
gtk_list_store_set_value(list_store, &iterator, COLUMN_FILENAME, filename);
}

void source_files_list_update() {
GSList *list = file_manager_get_all_sources();

GtkListStore *list_store;
list_store = gtk_list_store_new(NUM_COLUMNS,
G_TYPE_STRING);

GtkTreeView *tree_view;
tree_view = GTK_TREE_VIEW(gtk_builder_get_object(builder, TREE_VIEW_ID));
g_assert_true(tree_view != NULL);
gtk_tree_view_set_model(tree_view, GTK_TREE_MODEL(list_store));

GtkCellRenderer *renderer;
renderer = gtk_cell_renderer_text_new();

GtkTreeViewColumn *column;
column = gtk_tree_view_column_new_with_attributes("FILENAME", renderer, "text", COLUMN_FILENAME, NULL);

gtk_tree_view_append_column(tree_view, column);
g_slist_foreach(list, add_to_source_list, list_store);
}

最佳答案

gtk_list_store_set_value()GValue 作为其最后一个参数,而不是字符串。对于这种情况,您通常会收到编译器警告,但在这种情况下,filename 仍然是一个 gpointer,它是一个 void *,并且因此编译器假定您做的是正确的事情。

修复程序的最简单方法是改用 gtk_list_store_set()。阅读the documentation (无论如何都要遵循 jcoppens 的建议,尽管我不确定在这种情况下它是否会有所帮助...)。

关于c - GtkListStore 添加(段错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30264849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com