将行添加到 GTKTreeView 时的隔离错误
Segfault when Adding rows to GTKTreeView
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);
}
}
因此,每次插入行时都会重新创建迭代器。
相关文章:
- 从矢量中删除元素后出现隔离错误
- 在 gtest 中初始化堆栈上的引用变量的隔离错误
- 线程时访问静态映射时出现隔离错误
- 并行快速排序分区中的隔离错误
- C++多线程程序:变量定义为类成员的隔离错误
- TFLite 隔离错误,通过获取C++输入和输出
- 我只是在寻找模板,在我的书中找到了这段代码,这显示了隔离错误?
- pthread_create中错误 4 的隔离错误
- 递归树遍历/分支删除的隔离错误
- 在类模板上使用 arm gcc 编译期间的隔离错误
- 从大量文件读取时出现隔离错误
- 在PHP扩展中使用emalloc从线程时出现隔离错误
- 通过 Boost Python 在C++对象之间传递共享指针的隔离错误
- 在QT中单击菜单时出现隔离错误
- 尝试访问标头声明成员时出现隔离错误
- 搜索链表时出现隔离错误
- 模板化子类析构函数中的隔离错误
- 插件中节点.js/Nan 回调C++不频繁的隔离错误
- 将行添加到 GTKTreeView 时的隔离错误
- 找不到命令时打开的隔离错误