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]);
                }
            });
        });
    })
}
相关推荐
骐骥19 小时前
学习:javaScriptProxy和registerJavaScriptProxy有什么区别,能注册多少个对象
学习·鸿蒙
Huathy-雨落江南,浮生若梦9 小时前
Caddy 学习笔记 - 反向代理与 IP 封禁
笔记·学习·tcp/ip
谢白羽10 小时前
SGLang的AWQ量化笔记
笔记·python·sglang
噜~噜~噜~10 小时前
操作系统笔记-2.3.5.2 读者-写者问题
笔记·操作系统
m4Rk_11 小时前
【论文阅读】Agent 记忆机制(57):MemSearch-o1——从查询词元生长证据,重组 Deep Search 记忆路径
论文阅读·人工智能·学习·开源·github
小灰灰搞电子11 小时前
Rust+Slint 实现动态轮播图源码分享,支持动态删除、添加
开发语言·rust·slint·动态轮播图
闭月之泪舞12 小时前
C++编程学习
c++·学习
MindUp12 小时前
企业私有化文件管理系统选型实录:从部署架构到AI能力的技术调研笔记
人工智能·笔记·架构
GGMM78912 小时前
西门子BOP20基本操作面板超详细教程(S120/G130专用)
笔记·变频器·变频器维修
今天AI了吗13 小时前
大模型技术全景(一):AI、机器学习、深度学习,三者的关系到底是什么?一文搞懂
数据库·人工智能·python·sql·深度学习·机器学习·rust