rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(十四)垂直滚动条

垂直滚动条ScrollArea

rust 复制代码
fn main() -> eframe::Result<()> {
    // 配置原生窗口参数
    let options = eframe::NativeOptions::default();
    // 生成0-99的字符串列表
    let keys: Vec<String> = (0..100).map(|i| i.to_string()).collect();
    eframe::run_simple_native("菜单", options, move |ctx, _frame| {
        egui::CentralPanel::default().show(ctx, |ui| {
            load_fonts(&ctx);
            
            // 添加垂直滚动条
            egui::ScrollArea::vertical().show(ui, |ui| {
                for idx in &keys {
                    ui.label(idx);
                }
            });
        });
    })
}

只绘制可见部分

rust 复制代码
fn main() -> eframe::Result<()> {
    // 配置原生窗口参数
    let options = eframe::NativeOptions::default();
    let keys: Vec<String> = (0..100).map(|i| i.to_string()).collect();
    eframe::run_simple_native("菜单", options, move |ctx, _frame| {
        egui::CentralPanel::default().show(ctx, |ui| {
            load_fonts(&ctx);
            
            // 参数二:每行高度,参数三:行数
            egui::ScrollArea::vertical().show_rows(ui, 17., keys.len(), |ui, rng| {
                for idx in rng {
                    ui.label(&keys[idx]);
                }
            });
        });
    })
}

滚动条靠右显示

  • ui.set_width(f32):设置当前ui的宽度

  • ui.available_width():当前容器的剩余宽度

rust 复制代码
fn main() -> eframe::Result<()> {
    // 配置原生窗口参数
    let options = eframe::NativeOptions::default();
    let keys: Vec<String> = (0..100).map(|i| i.to_string()).collect();
    eframe::run_simple_native("菜单", options, move |ctx, _frame| {
        egui::CentralPanel::default().show(ctx, |ui| {
            load_fonts(&ctx);
            // 参数二:每行高度,参数三:行数
            egui::ScrollArea::vertical().show_rows(ui, 17., keys.len(), |ui, rng| {
                
                ui.set_width(ui.available_width()); // 设置当前ui元素的宽度为当前容器的剩余宽度
                
                for idx in rng {
                    ui.label(&keys[idx]);
                }
            });
        });
    })
}
相关推荐
keira6741 分钟前
个人健康日程表(小时级行为系统)
学习·生活
江屿风3 分钟前
C++图论基础拓扑排序算法流食般投喂
开发语言·c++·笔记·算法·排序算法
YangYang9YangYan4 分钟前
专科大数据技术学习数据分析的价值分析
大数据·学习·数据分析
段一凡-华北理工大学10 分钟前
工业领域的Hadoop架构学习~系列文章23:物流行业Hadoop应用实践 - 智能物流的数字化引擎
大数据·人工智能·hadoop·分布式·学习·架构·高炉炼铁
峥无13 分钟前
MySQL 系统学习之路 第一篇:服务安装、基础概念与架构全解
学习·mysql·架构
星栈独行13 分钟前
用 Rust + Makepad 做一个 JSON 查看器:从零到能用的全过程
开发语言·程序人生·ui·rust·json
阿正的梦工坊23 分钟前
【Rust】01-认识 Rust:语言定位、工具链与第一个程序
开发语言·后端·rust
OSwich26 分钟前
【UE5学习笔记】UMG中控件命名规范
笔记·学习·ue5
闪闪发亮的小星星26 分钟前
STK-01-通信卫星方向学习路线
网络·学习
问心无愧05139 小时前
ctf show web入门111
android·前端·笔记