子窗口show_viewport_immediate
builder: ViewportBuilder
窗口构建器的方法:
.with_title("窗口标题")
:窗口标题.with_inner_size([400.0, 300.0])
:窗口默认大小 .with_min_inner_size([200.0, 150.0])
:窗口大小最小值.with_max_inner_size([200.0, 150.0])
:窗口大小最大值
fn main() -> eframe::Result<()> {let opt = eframe::NativeOptions {viewport: egui::ViewportBuilder::default().with_inner_size([400., 500.]),..Default::default()};eframe::run_native("打开新窗口",opt,Box::new(|cc| Ok(Box::new(MyApp::new(cc)))),)
}struct MyApp {secend: bool,
}
impl MyApp {fn new(cc: &eframe::CreationContext<'_>) -> Self {Self { secend: false }}
}
impl eframe::App for MyApp {fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {eframe::egui::CentralPanel::default().show(ctx, |ui| {load_fonts(ctx); ui.label("主窗口中的信息……");ui.toggle_value(&mut self.secend, "打开/关闭新窗口方式一"); if ui.button("打开/关闭新窗口方式二").clicked() {self.secend = !self.secend;}});if self.secend { ctx.show_viewport_immediate( eframe::egui::ViewportId::from_hash_of("窗口唯一标识"), eframe::egui::ViewportBuilder::default().with_title("新窗口标题"), |ctx, class| {eframe::egui::CentralPanel::default().show(ctx, |ui| {if ctx.input(|x| x.viewport().close_requested()) {self.secend = false;}ui.label("新窗口中的信息……");})},);}}
}