gpt4 book ai didi

rust - GTK入口补全自定义匹配函数怎么写?

转载 作者:行者123 更新时间:2023-11-29 08:28:30 28 4
gpt4 key购买 nike

我想为 GTK 实现模糊搜索 EntryCompletion功能通过 set_match_func .文档非常有限。

请注意,代码使用默认的 EntryCompletion

函数应该是这样的:

fn custom_entry_completion(store: &gtk::EntryCompletion, text: &str, ti: &gtk::TreeIter) -> bool {
println!("{} // {:?}", text, ti);
true
}

我想把它嵌入到这样的东西中:

let completion_countries = gtk::EntryCompletion::new();
completion_countries.set_match_func(custom_entry_completion);

我想要一个模糊匹配,但我想我会自己处理这部分。最有帮助的是匹配不区分大小写或匹配字符串的最后部分(或其他内容)的示例。我正在寻找一个好的示例(最好没有不安全的)和/或好的文档。

所以我需要从 TreeIter 中获取值并检查匹配是否如我所愿。因此,我的问题是如何从 TreeIter 中获取要与 text 进行比较的项目。

最佳答案

文档

一个例子

fn custom_entry_completion(store: &gtk::EntryCompletion, text: &str, ti: &gtk::TreeIter) -> bool {
let tree_model = store.get_model().unwrap();
let text_column = store.get_text_column();

let ti_text_value = tree_model.get_value(ti, text_column);

if ti_text_value.is::<String>() {
let value = ti_text_value.get::<String>().unwrap();
println!("{:?} // {:?}", text, value);
} else {
println!("{:?} // not a string", text);
}

true
}

entry_completion.rs 一起使用时的控制台输出示例:

"adfs" // "France"
"adfs" // "Italy"
"adfs" // "Italy"
"adfs" // "Sweden"
"adfs" // "Sweden"
"adfs" // "Switzerland"
"adfs" // "Switzerland"
"adfssdf" // "France"
"adfssdf" // "Italy"
"adfssdf" // "Sweden"
"adfssdf" // "Switzerland"

关于rust - GTK入口补全自定义匹配函数怎么写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57695875/

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