按键事件
ui.input
:查询当前输入状态,只读,用于单个按键事件ui.input_mut
:可变访问,消费输入事件,防止事件重复处理,用于组合按键事件key_pressed
:用于单个按键consume_key
:用于组合按键- 注:以上笔记可能不完全正确 ,请自行尝试后判断用途
if ui.input(|i|i.key_pressed(egui::Key::Enter)){println!("按下了:回车键");
}
if ui.input_mut(|i|i.consume_key(egui::Modifiers::CTRL,egui::Key::D)){println!("按下了:Ctrl+D");
}
if ui.input_mut(|i| {i.consume_key(egui::Modifiers::CTRL|egui::Modifiers::SHIFT, egui::Key::D)}) {println!("按下了:Ctrl+Shift+D");
}
if ui.input_mut(|i|i.consume_key(egui::Modifiers::NONE,egui::Key::D)){println!("按下了:D");
}
按键事件应用
fn main() -> eframe::Result<()> {let options = eframe::NativeOptions::default();let mut texts: Vec<String> = Vec::new(); let mut edittext = String::new(); eframe::run_simple_native("添加删除", options, move |ctx, _frame| {egui::CentralPanel::default().show(ctx, |ui| {load_fonts(&ctx); let rp = ui.text_edit_singleline(&mut edittext); rp.request_focus(); if ui.input(|i| i.key_pressed(egui::Key::Enter)) {texts.push(edittext.clone()); edittext.clear(); rp.request_focus(); }for idx in &texts {ui.label(idx);}});})
}