如何在eframe+egui中添加可选择但不可编辑的段落?
实现可选中但不可编辑的段落
在egui中,要创建可选中但不可编辑的段落,你可以通过两种方式实现:
方法一:使用selectable_label
直接调用ui.selectable_label,将第一个参数设为false(仅开启文本选中功能,不默认高亮文本),即可实现需求:
use eframe; pub struct Gui; impl eframe::App for Gui { fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame) { egui::CentralPanel::default().show(ctx, |ui| { ui.heading("Hello there"); // 可选中但不可编辑的段落 ui.selectable_label(false, "General Kenobi"); }); } }
方法二:通过Label构建器配置
如果需要更灵活的样式控制(比如多行文本、自定义字体),可以使用egui::Label的构建器,通过selectable(true)开启选中功能:
use eframe; pub struct Gui; impl eframe::App for Gui { fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame) { egui::CentralPanel::default().show(ctx, |ui| { ui.heading("Hello there"); // 自定义配置的可选中段落 ui.add(egui::Label::new("这是一段支持选中复制、但不可编辑的多行文本\n换行也能正常选中").selectable(true)); }); } }
说明
两种方式的核心都是开启文本的选中权限,但限制编辑功能:
selectable_label的第一个布尔参数用于标记元素是否处于"主动高亮"状态,设为false时仅支持用户手动选中复制,不会默认高亮文本。Label构建器适合需要额外样式调整的场景,扩展性更强。
内容的提问来源于stack exchange,提问作者Umberto Fontanazza
相关产品推荐
相关产品推荐

