You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 15:22:01