Rust图形界面:eGUI的Panel布局

文章目录

    • Panel布局
    • 尺寸调节
    • 源码

Panel布局

eGUI提供面板堆叠的布局方案,即Panel布局。其布局逻辑是,根据当前面板指定的方向,尽可能地填充空间。

  • CentralPanel 占据屏幕剩余部分的空间
  • SidePanel 占据屏幕两侧的空间,在具体调用时,可指定left或者right
  • TopBottomPanel 占据屏幕顶部或底部的空间,具体调用时,可指定top或者bottom

示例如下

在这里插入图片描述

其压入顺序以及调用的布局函数如下表

顺序标题函数
1Top PanelTopBottomPanel::top
2Left PanelSidePanel::left
3Right PanelSidePanel::right
4Bottom PanelTopBottomPanel::bottom
5Central PanelCentralPanel

尺寸调节

由上图可见,Panel之间的界限是允许用鼠标拖动的,这是因为在创建Panel之后,将其设为尺寸可调节。SidePanel和TopBottomPanel均支持resizable方法,但二者的调节方向不同,前者是水平可调,后者是竖直可调。相应地,前者可以设置水平方向的调节尺寸,例如min_width, max_width以及width_range等,而后者则可设置min_height, max_height以及height_range等。

源码

用于布局的核心代码如下

impl eframe::App for MyApp {fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {egui::CentralPanel::default().show(ctx, |ui| {egui::TopBottomPanel::top("top_panel").resizable(true).min_height(32.0).show_inside(ui, |ui| {ui.heading("Top Panel");});egui::SidePanel::left("left_panel").resizable(true).default_width(150.0).width_range(80.0..=200.0).show_inside(ui, |ui| {ui.vertical_centered(|ui| {ui.heading("Left Panel");});});egui::SidePanel::right("right_panel").resizable(true).show_inside(ui, |ui| {ui.vertical_centered(|ui| {ui.heading("Right Panel");});});egui::TopBottomPanel::bottom("bottom_panel").show_inside(ui, |ui| {ui.vertical_centered(|ui| {ui.heading("Bottom Panel");});});egui::CentralPanel::default().show_inside(ui, |ui| {ui.vertical_centered(|ui| {ui.heading("Central Panel");});});});}
}

下面是程序运行的其他代码。

#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
use std::fmt::format;use eframe::egui;struct MyApp {
}impl Default for MyApp {fn default() -> Self {Self { }}
}
fn main() -> Result<(), eframe::Error> {let options = eframe::NativeOptions {initial_window_size: Some(egui::vec2(640.0, 320.0)),..Default::default()};eframe::run_native("layout",options,Box::new(|_cc| Box::<MyApp>::default()),)
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/188727.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【自动化测试】第一次项目实施

测试项目简介&#xff1a;基于python语言 跨平台的测试自动化工具&#xff0c;适用于后台、原生或混合型客户端应用的测试。它支持 Android、iOS、Web、后台、云服务和 Windows 端的 UI 自动化测试。 上手快&#xff0c;操作简单&#xff0c;只要有一点python基础&#xff0c…

双11背后的中国云厂商:新“标准化”,和调整后的新韧性

降价并不代表一味的压缩自身利润空间&#xff0c;云厂商已经开始向具有更高利润空间的PaaS、SaaS产品腾挪&#xff0c;核心产品在总包占比越来越高。 作者|斗斗 编辑|皮爷 出品|产业家 今年云厂商&#xff0c;全面拥抱双11。 作为中国最大的云计算服务提供商&#xff0…

Unity中Shader矩阵的行列式

文章目录 前言一、什么是矩阵的行列式&#xff1f;1、只有方阵才有行列式&#xff08;即 n X n 的矩阵&#xff09;2、数学上表示为 det(A) 或者 |A|3、行列式可以看做有向面积 或 体积 在空间中的变化影响 二、2 x 2矩阵的行列式三、3 x 3矩阵的行列式四、行列式计算总结五、使…

UE的PlayerController方法Convert Mouse Location To World Space

先上图&#xff1a; Convert Mouse Location To World这是PlayerController对象中很重要的方法。 需要说明的是两个输出值。 第一个是World Location&#xff0c;这是个基于世界空间的位置值&#xff0c;一开始我以为这个值和当前摄像机的位置是重叠的&#xff0c;但是打印出来…

git撤销未git commit的文件

目录 一、问题描述 二、方式1&#xff1a;git命令撤销&#xff08;更专业&#xff09; 1、文件已git add&#xff0c;未git commit 2、本地修改&#xff0c;未git add &#xff08;1&#xff09;撤销处于unstage的文件&#xff0c;即删除已有变动 &#xff08;2&#xff…

故障发现、定位提效超 70%,去哪儿可观测体系做了哪些优化?

一分钟精华速览 去哪儿网的原有监控系统在指标数量上展现出了强大实力——上亿指标量和百万级的告警量&#xff0c;但在故障数据方面却稍显不足——订单类故障平均发现时间长达 4 分钟&#xff0c;仅有 20%的订单类故障能在 1 分钟内被发现&#xff0c;近半数的故障处理时长超…

华夏ERP打包手册

Maven安装及环境配置 1.下载 浏览器搜索maven点击apache Maven 2.选择安装目录&#xff0c;注意不能有中文 3.环境变量配置 点击计算机右键属性>高级系统设置>环境变量 新建系统变量 MAVEN_HOME 变量值是安装目录 进入path点击新建点击编辑&#xff0c;写入% MAVEN_H…

YashanDB服务端个人版安装部署

介绍 崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统&#xff0c;融入原创理论&#xff0c;支持单机/主备、共享集群、分布式等多种部署方式&#xff0c;覆盖OLTP/HTAP/OLAP交易和分析混合负载场景&#xff0c;为客户提供一站式的企业级融合数据…

Linux中的进程等待(超详细)

Linux中的进程等待 1. 进程等待必要性2. 进程等待的方法2.1 wait方法2.2 waitpid方法 3. 获取子进程status4. 具体代码实现 1. 进程等待必要性 我们知道&#xff0c;子进程退出&#xff0c;父进程如果不管不顾&#xff0c;就可能造成‘僵尸进程’的问题&#xff0c;进而造成内…

vue3 ts vite 主题色功能

开发工具&#xff1a;vue3 ts vite 如上图&#xff0c;选择个颜色整个变化&#xff0c;如下图 默认主题为绿色 切换成其它色。 这里面的颜色块&#xff0c;你也可以给个取器色组件&#xff0c;可切换成任意色。切换时主要执行下方的方法&#xff0c;有兴趣可自己研究下。 /…

torch - 张量Tensor简介与创建

张量是什么&#xff1f; 张量就是多维数组&#xff0c;0维张量叫标量&#xff0c;1维张量是向量&#xff0c;2维张量是矩阵&#xff0c;灰度图片大多都使用2维张量所表示的&#xff0c;3维张量一般用于RGB图片的表示。 张量的属性 其中后四个是用于Tensor自动求导。前四个和T…

C语言--写一个函数返回bool值,来判断给定的字符串A和B(假设都是小写字母),是否是B中的字符都存在于A中,如果是返回true,否则返回false

一.题目描述 写一个函数返回bool值&#xff0c;来判断给定的字符串A和B&#xff08;假设都是小写字母&#xff09;&#xff0c;是否是B中的字符都存在于A中&#xff0c;如果是返回true&#xff0c;否则返回false。例如&#xff1a; 字符串A&#xff1a;abcde 字符串B&#xff…