当前位置: 首页 > java >正文

rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(十八) 使用表格

使用表格egui_extras::TableBuilder

// Cargo.toml
[dependencies]
eframe = "0.32.1"
egui = "0.32.1"
egui_extras = "0.32.1"
  • egui_extras::Column::auto() 列宽根据内容自动计算
  • .resizable(true) 允许用户手动拖动调整列宽
fn main() -> eframe::Result<()> {// 配置原生窗口参数let options = eframe::NativeOptions::default();eframe::run_simple_native("使用表格", options, move |ctx, _frame| {egui::CentralPanel::default().show(ctx, |ui| {load_fonts(&ctx);// 创建一个表格egui_extras::TableBuilder::new(ui)// 设置列属性// 创建一个自动调整宽度的列.column(egui_extras::Column::auto().resizable(true))// 创建一个占据剩余可用宽度的列// 该列自动填充容器中剩余未被占用的列.column(egui_extras::Column::remainder())// 设置表头,行高20.header(20.0, |mut header| {header.col(|ui| {// 标题,加粗,字号加大等ui.heading("姓名");});header.col(|ui| {ui.heading("年龄");});})// 设置表体.body(|mut body| {// 一行数据,行高30body.row(30.0, |mut row| {// 一个单元格的数据row.col(|ui| {ui.label("小李");});row.col(|ui| {ui.button("25");});});// 一行数据body.row(30.0, |mut row| {row.col(|ui| {ui.label("小赵");});row.col(|ui| {ui.button("16");});});});});})
}

批量设置数据方式一

fn main() -> eframe::Result<()> {// 配置原生窗口参数let options = eframe::NativeOptions::default();// 生成20行10列数据let bbody: Vec<Vec<String>> = (0..20).map(|i| (0..10).map(|e| format!("{}--{}", i, e)).collect()).collect();eframe::run_simple_native("使用表格", options, move |ctx, _frame| {egui::CentralPanel::default().show(ctx, |ui| {load_fonts(&ctx);egui_extras::TableBuilder::new(ui)// 设置10列,自动调整宽度,可手动调整.columns(egui_extras::Column::auto().resizable(true), 10)// 设置表头.header(20.0, |mut header| {for idx in 0..10 {header.col(|ui| {ui.heading(format!("{}", idx));});}})// 设置表体.body(|mut body| {for idx in &bbody {body.row(30.0, |mut row| {for idy in idx {row.col(|ui| {ui.label(idy);});}});}});});})
}

批量设置数据方式二rows

fn main() -> eframe::Result<()> {// 配置原生窗口参数let options = eframe::NativeOptions::default();let bbody: Vec<Vec<String>> = (0..20).map(|i| (0..10).map(|e| format!("{}--{}", i, e)).collect()).collect();eframe::run_simple_native("使用表格", options, move |ctx, _frame| {egui::CentralPanel::default().show(ctx, |ui| {load_fonts(&ctx);egui_extras::TableBuilder::new(ui)// 设置10列,自动调整宽度,可手动调整.columns(egui_extras::Column::auto().resizable(true), 10)// 设置表头.header(20.0, |mut header| {for idx in 0..10 {header.col(|ui| {ui.heading(format!("{}", idx));});}})// 设置表体.body(|mut body| {body.rows(17., bbody.len(), |mut row| { // 所有行数据let r_idx = row.index();            // 当前行的索引if let Some(d) = bbody.get(r_idx) { // 行内有数据for idx in d {                  // 遍历一行数据row.col(|ui| {ui.label(idx);});}}});});});})
}
http://www.xdnf.cn/news/18703.html

相关文章:

  • 【分布式中间件】Kafka 核心配置深度解析与优化指南
  • 【数据结构与算法】并查集
  • 当GitHub“断网”:从应急到终极方案,手把手搭建永不宕机的代码协作体系
  • LLM 中增量解码与模型推理解读
  • 包装类 抽象类 内部类 接口
  • Flink Slot 不足导致任务Pending修复方案
  • VirtualBox 中安装 Ubuntu 22.04
  • 基于Java、GeoTools与PostGIS的对跖点求解研究
  • 如何快速对接印度股票市场数据API?完整开发指南
  • Solidity学习笔记
  • MATLAB实现CNN-GRU-Attention时序和空间特征结合-融合注意力机制混合神经网络模型的风速预测
  • AI Agent全栈开发流程推荐(全栈开发步骤)
  • Kubernetes v1.34 前瞻:资源管理、安全与可观测性的全面进化
  • 【和春笋一起学C++】(三十五)类的使用实例
  • 1.Spring Boot:超越配置地狱,重塑Java开发体验
  • 逆光场景识别率↑76%!陌讯多模态融合算法在手机拍照识别的落地实践​
  • centos安装jenkins
  • 校园跑腿小程序源码 | 跑腿便利店小程序 含搭建教程
  • bun + vite7 的结合,孕育的 Robot Admin 【靓仔出道】(十八)
  • 目标检测数据集 第005期-基于yolo标注格式的PCB组件检测数据集(含免费分享)
  • JavaScript数据结构详解
  • 智元精灵GO1 agibot数据转换Lerobot通用格式数据脚本
  • [创业之路-567]:数字技术、数字产品、数字资产、数字货币、数字企业、数字经济、数字世界、数字人生、数字智能、数字生命
  • 大模型知识--Function Calls
  • element-plus穿梭框transfer的调整
  • 【实习总结】快速上手Git:关键命令整理
  • AI版权保护破局内容行业痛点:侵权识别效率升89%+维权周期缩至45天,区块链存证成关键
  • vue中 computed vs methods
  • unity热更新总结
  • Linux的线程概念与控制