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]);
                }
            });
        });
    })
}
相关推荐
半壶清水3 小时前
[软考网规考点笔记]-软件开发、项目管理与知识产权核心知识与真题解析
网络·笔记·压力测试
tq10863 小时前
先探索,后设计
笔记
hnult3 小时前
2026 在线培训考试系统选型指南:核心功能拆解与选型逻辑
人工智能·笔记·课程设计
AI视觉网奇4 小时前
ue 角色驱动衣服 绑定衣服
笔记·学习·ue5
暴躁小师兄数据学院4 小时前
【WEB3.0零基础转行笔记】Rust编程篇-第一讲:课程简介
rust·web3·区块链·智能合约
三水不滴4 小时前
计网ping原理
经验分享·笔记·计算机网络
prog_61034 小时前
【笔记】思路分享:各种大模型免费当agent后台
笔记·大语言模型·agent·cursor
凯尔萨厮5 小时前
Maven(Windows下载安装)
笔记·maven
wdfk_prog5 小时前
[Linux]学习笔记系列 -- [drivers][input]serio
linux·笔记·学习
菩提小狗6 小时前
小迪安全2023-2024|第5天:基础入门-反弹SHELL&不回显带外&正反向连接&防火墙出入站&文件下载_笔记|web安全|渗透测试|
笔记·安全·web安全