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]);
                }
            });
        });
    })
}
相关推荐
一隅论数智21 小时前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
XiHongShi201621 小时前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
爱吃苹果的日记本1 天前
离散数学第六课
学习·离散数学
AI职业加油站1 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
深圳老胡1 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
旖旎夜光1 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
奇思妙想聪明勤奋的小羊1 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型
Because_of_Her11 天前
并查集-听课笔记
笔记·算法·并查集
霍霍的袁1 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio