如何在 Gtk-rs 中获取选定列的文本

How to get selected column's text In Gtk-rs

我在这里有一个问题。所以我在 Gtk-rs 中有一个 TreeView,它与 ListStore 链接。 ListStore 有 3 列,但我只显示 2 列。我的问题很简单,基本上我希望每当用户点击 TreeView 的一行时,程序将第四列打印到 stdout.

代码库很大,所以我无法共享代码,因为代码分布在 50 个文件中。它也将是开源的,但还没有。所以我被这个问题困在这里。我试过 Reddit 但没有成功。

非常欢迎任何帮助。只需分享一个带有可能解释的小代码片段。

提前致谢。

您想管理 row_activated 信号。如果您希望用户通过单击而不是双击来激活该行,正如您似乎建议的那样,您需要将 activate-on-single-click 属性 设置为 true。

然后只需要从树中获取模型(或从某些捕获的状态),从单击的 path 中获取 iter,从 [=13= 中获取值] 和想要的列,并将其转换为正确的类型。

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() 调用以使代码更简单。您应该检查其中任何一个是否会在您的应用程序中失败并妥善处理这些情况。