GTK4(Rust/GTK-Rs)中获取GtkComboBoxText所有项并设置选中项
GTK Rust ComboBoxText 问题解答
遍历找索引的方式是否正确?
遍历所有项匹配字符串来获取索引是完全正确的做法,对于大多数普通规模的选项列表来说,这种方式的性能开销可以忽略不计,完全够用。
更优方案
其实不用手动遍历——ComboBoxText自带set_active_id()方法,直接传入你要选中的字符串值就能完成设置,底层会自动帮你匹配对应的选项,比手动遍历更简洁高效:
let combo: ComboBoxText = self.widget.clone().downcast::<ComboBoxText>().unwrap(); // 直接传入目标字符串设置选中项 combo.set_active_id(Some("你要选中的字符串"));
获取所有项列表的方法
你拿到的model是ListModel类型,可以通过iter()方法拿到迭代器,再把每个条目转换成StringObject来提取字符串内容:
let combo: ComboBoxText = self.widget.clone().downcast::<ComboBoxText>().unwrap(); let model = combo.model().unwrap(); // 收集所有项到Vec<String>中 let all_items: Vec<String> = model.iter() .filter_map(|obj| { obj.downcast_ref::<gtk::StringObject>() .map(|string_obj| string_obj.string().to_string()) }) .collect(); // 打印验证(可选) for item in all_items { println!("选项:{}", item); }
内容的提问来源于stack exchange,提问作者user2297996
相关产品推荐
相关产品推荐

