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

如何在egui的TextEdit组件双击事件中选中全部文本?

在egui的TextEdit双击事件中实现全选文本

要实现双击TextEdit时全选所有文本,你可以通过操作TextEdit的内部状态来完成,具体步骤如下:

  1. 从TextEdit::show()返回的TextEditOutput中获取state(即TextEditState)
  2. 调用状态的select_all()方法设置全选范围
  3. 将更新后的状态存回egui的UI上下文,确保界面同步更新

修改后的代码示例:

let text_edit = egui::TextEdit::singleline(&mut parameter.str_value)
    .desired_width(50.0);
let output = text_edit.show(ui);
if output.response.double_clicked() {
    // 获取TextEdit状态并执行全选
    if let Some(mut state) = output.state {
        state.select_all();
        // 把更新后的状态保存到UI上下文,让界面显示全选效果
        ui.data_mut(|data| data.insert_temp(output.response.id, state));
    }
}

关键说明:

  • TextEditState 存储了TextEdit的光标位置、选中范围等交互状态
  • select_all() 方法会直接将选中范围设置为从文本开头到结尾
  • 必须通过ui.data_mut()存回状态,否则egui无法感知到状态变化,全选效果不会在界面上显示

这个方法对单行(singleline)和多行(multiline)的TextEdit都适用。

内容的提问来源于stack exchange,提问作者user1503949

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:30:58