我有个问题要问。所以我在Gtk-rs中有一个链接到ListStore的TreeView。ListStore有3列,但我只显示了2列。我的问题很简单,基本上我希望每当用户单击TreeView的某一行时,程序都会将第四列打印到stdout。
代码库很大,所以我不能分享代码,因为代码分布在50个文件中。此外,它将是开源的,但还不是。所以我被这个问题困在这里了。我试过Reddit,但没有成功。
我们非常欢迎任何帮助。只需分享一小段代码,并提供可能的解释。
提前谢谢。
发布于 2020-07-15 16:56:39
您想要管理row_activated信号。如果希望用户通过单击激活行,而不是像您建议的那样双击,则需要将activate-on-single-click属性设置为true。
然后,只需从树(或从某个捕获的状态)中获取模型,从单击的path中获取iter,从iter和cast列中获取值,并将其转换为适当的类型。
tree.set_activate_on_single_click(true);
tree.connect_row_activated(
|tree, path, _col| {
let model = tree.get_model().unwrap();
let iter = model.get_iter(path).unwrap();
let text = model.get_value(&iter, 2).get::<String>().unwrap();
println!("{}", text);
}
);我添加了一些unwrap()调用以使代码更简单。您应该检查在您的应用程序中是否有任何这些操作会失败,并正确地处理这些情况。
https://stackoverflow.com/questions/62907332
复制相似问题