使用macroquad时egui::TextEdit::singleline无法编辑文本的问题
解决egui-macroquad中TextEdit无法编辑的问题
问题根源
你传递给TextEdit::singleline的是&mut "ku"——这是对静态不可变字符串字面量的可变引用,而字面量本身无法被修改,导致TextEdit组件无法进入可编辑状态。
修复代码
将静态字符串替换为可变的String变量,传递其可变引用给TextEdit:
use macroquad::prelude::*; #[macroquad::main("")] async fn main() { // 声明可变String存储输入内容 let mut input_text = "ku".to_string(); loop { clear_background(BLACK); egui_macroquad::ui(|egui_ctx| { egui_macroquad::egui::Window::new("egui ❤ macroquad").show(egui_ctx, |ui| { ui.colored_label(egui_macroquad::egui::Color32::WHITE, "Test"); // 传递可变String的引用 ui.add(egui_macroquad::egui::TextEdit::singleline(&mut input_text).text_color(egui_macroquad::egui::Color32::RED)); }); }); egui_macroquad::draw(); next_frame().await } }
说明
修改后,TextEdit持有可修改的String引用,能够正常处理用户输入操作,组件即可进入可编辑状态。
内容的提问来源于stack exchange,提问作者Denis Salmanovich
相关产品推荐
相关产品推荐

