gpt4 book ai didi

c++ - 将行添加到 GTKTreeView 时出现段错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:10:09 24 4
gpt4 key购买 nike

GtkWidget *tree_view;
GtkListStore *tree_store;
GtkTreeModel *tree_model;
tree_store = gtk_list_store_new(4, G_TYPE_STRING,G_TYPE_STRING,G_TYPE_INT,G_TYPE_FLOAT);
tree_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(tree_store));
GtkTreeIter iter;
gtk_list_store_append(tree_store, &iter);

for(int j = 0; j < 2; j++) {
GValue value = {0};
g_value_init(&value, G_TYPE_STRING);
g_value_set_string(&value, "1.0");
gtk_list_store_set_value(tree_store, &iter, j, &value);
}
gtk_tree_model_iter_next(tree_model, &iter);

我想做的是将迭代器移到下一行,这样我就可以插入另一行值。但是,最后一行会导致段错误。这是为什么?

最佳答案

迭代器必须在行之间重置,但更好的方法是使用 gtk_list_store_set 而不是 set_value。我的解决方案是这样的:

for(int i=0; i<num_rows; i++) {
GtkTreeIter iter;
gtk_list_store_append(tree_store, &iter);
for(int j = 0; j < 2; j++) {

GValue value = {0};
g_value_init(&value, G_TYPE_STRING);
g_value_set_string(&value, "1.0");
gtk_list_store_set(tree_store, &iter, j, "1.0", -1);
gtk_list_store_set(tree_store, &iter, j, "1.0", -1);
}

}

因此每次插入一行时都会重新创建迭代器。

关于c++ - 将行添加到 GTKTreeView 时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43047905/

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