在我的应用程序中,我有一个具有单选模式的 GtkIconView。我想获取所选项目的文本(并进一步采取行动)。现在,我有一些我可以使用的代码,但是 GtkTreePath 的实际获取会使程序崩溃(段错误)。
Program received signal SIGSEGV, Segmentation fault.
0x0804d350 in minkovsky_ufilter_ufilter_window_on_filter_selected (
e=0x8172010, self=0x8354d80)
at /home/filip/ufilter/src/UfilterWindow.vala:281
281 TreePath item = filterchooser.get_selected_items().data;
你能告诉我为什么会发生(以及如何解决它)吗?
谢谢。
编辑:我做了更多的测试,但仍然没有定论。也就是说,我想检查是否get_selected_items()
返回 null (导致问题),但它只是在新的地方再次出现了段错误。这是代码:
[CCode (instance_pos = -1)]
public void on_filter_selected (Event e) {
if(filterchooser.get_selected_items() == null){ // <-- Now happens here
stderr.printf("Null!");
return;
}
TreePath item = filterchooser.get_selected_items().data; // <-- Used to happen here
TreeIter iter;
string selection;
filterchooser_liststore.get_iter(out iter, item);
filterchooser_liststore.get(iter, 0, out selection);
stderr.printf("Selected filter: %s\n", selection);
}
编辑 2:这是精简版。它包含:两个源文件、一个glade 文件和示例图像,以及一个带有编译命令的自述文件。您将需要 Valac v0.16、GTK+ 3.0 和 GModule 2.0(我本可以进一步精简它,但它只是忽略了一点:生产代码中需要这些)。仍然是段错误。