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]);
                }
            });
        });
    })
}
相关推荐
杨云龙UP5 小时前
从0到1快速学会Linux操作系统(基础),这一篇就够了!
linux·运维·服务器·学习·ubuntu·centos·ssh
头疼的程序员5 小时前
计算机网络:自顶向下方法(第七版)第八章 学习分享(三)
网络·学习·计算机网络
_李小白6 小时前
【OSG学习笔记】Day 37: NodeVisitor(顶点访问器)
笔记·学习
程序员雷欧6 小时前
大模型应用开发学习第八天
大数据·人工智能·学习
SccTsAxR7 小时前
算法基石:手撕离散化、递归与分治
c++·经验分享·笔记·算法
晓晓hh7 小时前
JavaSE学习——set集合和Map映射
学习
西梅汁7 小时前
C++ 观察者模式
笔记
لا معنى له8 小时前
Var-JEPA:联合嵌入预测架构的变分形式 —— 连接预测式与生成式自监督学习 ----论文翻译
人工智能·笔记·学习·语言模型
世人万千丶8 小时前
Flutter 框架跨平台鸿蒙开发 - 宠物语言翻译器应用
学习·flutter·华为·开源·harmonyos·鸿蒙
AI成长日志8 小时前
【笔面试算法学习专栏】哈希表基础:两数之和与字母异位词分组
学习·算法·面试