动画网站制作,工程承包app,php网站开发实例教程 课件,seo博客大全说在前面 rust新手#xff0c;egui没啥找到啥教程#xff0c;这里自己记录下学习过程环境#xff1a;windows11 22H2rust版本#xff1a;rustc 1.71.1egui版本#xff1a;0.22.0eframe版本#xff1a;0.22.0上一篇#xff1a;这里 SidePanel 侧边栏#xff0c;如下图 …说在前面 rust新手egui没啥找到啥教程这里自己记录下学习过程环境windows11 22H2rust版本rustc 1.71.1egui版本0.22.0eframe版本0.22.0上一篇这里 SidePanel 侧边栏如下图 其定义为 pub struct SidePanel {side: Side,id: Id,frame: OptionFrame,resizable: bool, show_separator_line: bool, // 是否显示边框default_width: f32, // 默认宽度width_range: RangeInclusivef32, // 宽度范围
}通过right()或left()方法生成 egui::SidePanel::right(panel_name)方法实现与TopBottomPanel::top()类似 pub fn right(id: impl IntoId) - Self {// id需要保证全局唯一Self::new(Side::Right, id)
}生成时的默认属性值为 pub fn new(side: Side, id: impl IntoId) - Self {Self {side,id: id.into(),frame: None,resizable: true,show_separator_line: true,default_width: 200.0,width_range: 96.0..f32::INFINITY,}
}我们可以将app.rs中的egui::SidePanel::left(side_panel)改成right()看下效果 然后让我们来看看SidePanel的其他属性 resizable 默认值为true效果如下图 但是为啥会变回去而且不丝滑 右侧边栏的效果有点奇怪 设置为false后宽度将不可变 egui::SidePanel::left(side_panel).resizable(false).show注意只有在panel中有一些需要占用空间的元素时resizable才有效例如只保留 egui::SidePanel::left(side_panel).default_width(100.0).show(ctx, |ui| {ui.heading(Side Panel);
});这个时候其实无法拖拽边框 show_separator_line 默认值为true修改为false后的表现为 egui::SidePanel::right(side_panel).show_separator_line(false).show(效果不是很明显因为CentralPanel也有边框并且没找到方法去掉 default_width 默认值200.0可通过default_width()方法进行修改 pub fn default_width(mut self, default_width: f32) - Self {// 修改self.default_widthself.default_width default_width; // 依照default_width调整self.width_range// 例如default_width为200那么结果依旧为96~inf// 例如default_width为80那么结果为80~infself.width_range self.width_range.start().at_most(default_width)..self.width_range.end().at_least(default_width);self
}但是实际上没有用不知道为啥
Ui::heading()
大号的文字标题/// Show large text.
///
/// Shortcut for ui.label(RichText::new(text).heading())
pub fn heading(mut self, text: impl IntoRichText) - Response {Label::new(text.into().heading()).ui(self)
}我们也可以使用ui.label(RichText::new(text).heading())来自定义例如ui.label(egui::widget_text::RichText::new(Side Panel).heading().color(Color32::GREEN));CentralPanel
主面板(panel)窗口中未被其他panel占用的部分。CentralPanel必须在其他panel之后添加。否则其他panel将会覆盖CentralPanel。以下是CentralPanel在SidePanel之前添加的效果可以看到有部分元素被挡住了 可以看看不加CentralPanel的效果 CentralPanel没有可以自定义的属性
Panel之间的布局 目前来看egui的panel有三种Central、Side、TopBottom panel的添加顺序是非常重要的先添加的在最外层后添加的在内层 例如在我们的template中添加顺序是TopBottom、Side、Central其结果是 如果改为Side、TopBottom、Central其结果为 同时一个窗口中panel可以不止3个例如我们可以这样添加TopBottom、Side、TopBottom、Central 如果想要将sidepanel拆分为上下两部分是否可以实现怎样实现呢这部分留着后面探讨。
参考
richtextsidepanelcentralpanel