国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【rust/egui】(五)看看template的app.rs:SidePanel、CentralPanel以及heading

這篇具有很好參考價值的文章主要介紹了【rust/egui】(五)看看template的app.rs:SidePanel、CentralPanel以及heading。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

說在前面

  • rust新手,egui沒啥找到啥教程,這里自己記錄下學習過程
  • 環(huán)境:windows11 22H2
  • rust版本:rustc 1.71.1
  • egui版本:0.22.0
  • eframe版本:0.22.0
  • 上一篇:這里

SidePanel

  • 側(cè)邊欄,如下圖
    【rust/egui】(五)看看template的app.rs:SidePanel、CentralPanel以及heading,Rust,rust,開發(fā)語言,后端

  • 其定義為:

    pub struct SidePanel {
    	side: Side,
    	id: Id,
    	frame: Option<Frame>,
    	resizable: bool, 
    	show_separator_line: bool, // 是否顯示邊框
    	default_width: f32, // 默認寬度
    	width_range: RangeInclusive<f32>, // 寬度范圍
    }
    
  • 通過right()left()方法生成:

    egui::SidePanel::right("panel_name")
    

    方法實現(xiàn)與TopBottomPanel::top()類似:

    pub fn right(id: impl Into<Id>) -> Self {
    	// id需要保證全局唯一
        Self::new(Side::Right, id)
    }
    

    生成時的默認屬性值為:

    pub fn new(side: Side, id: impl Into<Id>) -> Self {
        Self {
            side,
            id: id.into(),
            frame: None,
            resizable: true,
            show_separator_line: true,
            default_width: 200.0,
            width_range: 96.0..=f32::INFINITY,
        }
    }
    
  • 我們可以將app.rs中的egui::SidePanel::left("side_panel")改成right()看下效果:
    【rust/egui】(五)看看template的app.rs:SidePanel、CentralPanel以及heading,Rust,rust,開發(fā)語言,后端

  • 然后讓我們來看看SidePanel的其他屬性

  • resizable
    默認值為true,效果如下圖 (但是為啥會變回去?而且不絲滑)
    【rust/egui】(五)看看template的app.rs:SidePanel、CentralPanel以及heading,Rust,rust,開發(fā)語言,后端
    右側(cè)邊欄的效果有點奇怪:
    【rust/egui】(五)看看template的app.rs:SidePanel、CentralPanel以及heading,Rust,rust,開發(fā)語言,后端

    設置為false后,寬度將不可變:

    egui::SidePanel::left("side_panel").resizable(false).show
    

    注意,只有在panel中有一些需要占用空間的元素時,resizable才有效,例如只保留:

    egui::SidePanel::left("side_panel").default_width(100.0).show(ctx, |ui| {
        ui.heading("Side Panel");      
    });
    

    這個時候其實無法拖拽邊框:
    【rust/egui】(五)看看template的app.rs:SidePanel、CentralPanel以及heading,Rust,rust,開發(fā)語言,后端

  • show_separator_line
    默認值為true,修改為false后的表現(xiàn)為:

    egui::SidePanel::right("side_panel").show_separator_line(false).show(
    

    【rust/egui】(五)看看template的app.rs:SidePanel、CentralPanel以及heading,Rust,rust,開發(fā)語言,后端
    效果不是很明顯,因為CentralPanel也有邊框,并且沒找到方法去掉

  • default_width
    默認值200.0,可通過default_width()方法進行修改:

    pub fn default_width(mut self, default_width: f32) -> Self {
    	// 修改self.default_width
        self.default_width = default_width; 
        // 依照default_width調(diào)整self.width_range
        // 例如default_width為200,那么結(jié)果依舊為96~inf
        // 例如default_width為80,那么結(jié)果為80~inf
        self.width_range = self.width_range.start().at_most(default_width)
            ..=self.width_range.end().at_least(default_width);
        self
    }
    

    (但是實際上沒有用,不知道為啥)

Ui::heading()

  • 大號的文字,標題
    /// Show large text.
    ///
    /// Shortcut for `ui.label(RichText::new(text).heading())`
    pub fn heading(&mut self, text: impl Into<RichText>) -> Response {
        Label::new(text.into().heading()).ui(self)
    }
    
  • 我們也可以使用ui.label(RichText::new(text).heading())來自定義,例如:
    ui.label(egui::widget_text::RichText::new("Side Panel").heading()
    	.color(Color32::GREEN));
    
    【rust/egui】(五)看看template的app.rs:SidePanel、CentralPanel以及heading,Rust,rust,開發(fā)語言,后端

CentralPanel

  • 主面板(panel),窗口中未被其他panel占用的部分。
  • CentralPanel必須在其他panel之后添加。否則其他panel將會覆蓋CentralPanel
  • 以下是CentralPanelSidePanel之前添加的效果,可以看到有部分元素被擋住了:
    【rust/egui】(五)看看template的app.rs:SidePanel、CentralPanel以及heading,Rust,rust,開發(fā)語言,后端
  • 可以看看不加CentralPanel的效果:
    【rust/egui】(五)看看template的app.rs:SidePanel、CentralPanel以及heading,Rust,rust,開發(fā)語言,后端
  • CentralPanel沒有可以自定義的屬性

Panel之間的布局

  • 目前來看,eguipanel有三種:Central、Side、TopBottom

  • panel的添加順序是非常重要的,先添加的在最外層,后添加的在內(nèi)層

  • 例如,在我們的template中,添加順序是TopBottom、SideCentral,其結(jié)果是:
    【rust/egui】(五)看看template的app.rs:SidePanel、CentralPanel以及heading,Rust,rust,開發(fā)語言,后端

  • 如果改為Side、TopBottom、Central,其結(jié)果為:
    【rust/egui】(五)看看template的app.rs:SidePanel、CentralPanel以及heading,Rust,rust,開發(fā)語言,后端

  • 同時,一個窗口中panel可以不止3個,例如我們可以這樣添加:TopBottomSide、TopBottom、Central
    【rust/egui】(五)看看template的app.rs:SidePanel、CentralPanel以及heading,Rust,rust,開發(fā)語言,后端

  • 如果想要將sidepanel拆分為上下兩部分,是否可以實現(xiàn),怎樣實現(xiàn)呢?這部分留著后面探討。文章來源地址http://www.zghlxwxcb.cn/news/detail-674419.html

參考

  • richtext
  • sidepanel
  • centralpanel

到了這里,關于【rust/egui】(五)看看template的app.rs:SidePanel、CentralPanel以及heading的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【rust/egui】(二)看看template的main函數(shù):日志輸出以及eframe run_native

    【rust/egui】(二)看看template的main函數(shù):日志輸出以及eframe run_native

    rust新手,egui沒啥找到啥教程,這里自己記錄下學習過程 環(huán)境:windows11 22H2 rust版本:rustc 1.71.1 egui版本:0.22.0 eframe版本:0.22.0 上一篇:這里 首先讓我們看看 main.rs 中有些什么 在 eframe 中使用的日志庫為 log 以及 env_logger ,其日志等級有5個: 我們可以在main函數(shù)中添加測試一

    2024年02月13日
    瀏覽(22)
  • 【rust/egui】(一)從編譯運行template開始

    【rust/egui】(一)從編譯運行template開始

    rust新手,egui沒啥找到啥教程,這里自己記錄下學習過程 環(huán)境:windows11 22H2 rust版本:rustc 1.71.1 egui版本:0.22.0 eframe版本:0.22.0 rust windows安裝參考:這里 本文默認讀者已安裝相關環(huán)境(git、vscode等) egui github demo online 關于 immediate mode wikipedia microsoft learn 先 clone 下這個項目(也可

    2024年02月13日
    瀏覽(19)
  • RUST egui部署到github

    接上文,當用trunk serve編譯部署后,工程目錄下就會有一個dist目錄,這個目錄就是用來部署用的。 :) 創(chuàng)建一個github repo,這個repo的名稱有固定格式要求,就是你自己的用戶名+github.io,比如我的用戶名是crazyskady,那么這個repo就叫crazyskady.github.io 部署就簡單了,先把自己的

    2024年03月21日
    瀏覽(19)
  • [Rust GUI]eframe(egui框架)代碼示例

    [Rust GUI]eframe(egui框架)代碼示例

    你可以使用egui的其他綁定,例如:egui-miniquad,bevy_egui,egui_sdl2_gl 等。 egui庫相當于核心庫,需要借助eframe框架寫界面。 eframe使用egui_glow渲染,而egui_glow需要opengl2.0+。 1、訪問微軟官網(wǎng)下載生成工具 2、勾選這個 3、對比勾選細節(jié) 4、點擊安裝 5、安裝完成 6、關閉 Visual Studio

    2024年02月08日
    瀏覽(22)
  • Rust圖形界面:從零開始創(chuàng)建eGUi項目

    Rust圖形界面:從零開始創(chuàng)建eGUi項目

    egui系列:初步 首先,用cargo創(chuàng)建一個新項目,并添加eframe 盡管默認創(chuàng)建的項目只實現(xiàn)了輸出Hello world功能,但添加了eframe庫,所以下載需要一點時間。 創(chuàng)建成功后,直接把下面的代碼寫入main.rs文件中,這些代碼來自egui的hello_world示例。 然后運行cargo run,結(jié)果如下所示 在e

    2024年02月01日
    瀏覽(23)
  • 【rust/egui】(十)使用painter繪制一些圖形—connections

    【rust/egui】(十)使用painter繪制一些圖形—connections

    rust新手,egui沒啥找到啥教程,這里自己記錄下學習過程 環(huán)境:windows11 22H2 rust版本:rustc 1.71.1 egui版本:0.22.0 eframe版本:0.22.0 上一篇:這里 在上一節(jié)我們使用 painter 繪制了一個可以拖拽的小方塊,現(xiàn)在我們來用 painter 將兩個小方塊連接起來,類似這種: 首先我們需要在我們

    2024年02月09日
    瀏覽(25)
  • 【Rust日報】2023-02-14 Rust GUI 框架對比: Tauri vs Iced vs egui

    【Rust日報】2023-02-14 Rust GUI 框架對比: Tauri vs Iced vs egui

    Rust GUI 框架對比: Tauri vs Iced vs egui Tauri:使用系統(tǒng)的 webview 來渲染 HTML/JS 的前端。你可以選擇任何前端框架。后臺是用Rust編寫的,可以通過內(nèi)置的方法與前臺通信。 Iced: 受 Elm 啟發(fā)的(響應式)GUI庫。在桌面上使用 wgpu 進行渲染;實驗性的web后端創(chuàng)建DOM進行渲染。所有代碼

    2024年02月02日
    瀏覽(21)
  • 【rust/egui】(八)使用panels給你的應用劃分功能區(qū)塊

    【rust/egui】(八)使用panels給你的應用劃分功能區(qū)塊

    rust新手,egui沒啥找到啥教程,這里自己記錄下學習過程 環(huán)境:windows11 22H2 rust版本:rustc 1.71.1 egui版本:0.22.0 eframe版本:0.22.0 上一篇:這里 panel 是ui上的一塊區(qū)域,比如我們打開CSDN的markdown編輯器,它大致上可以劃分成四(五)塊 (當然實際實現(xiàn)上這四塊區(qū)域可能不是并列的

    2024年02月09日
    瀏覽(19)
  • 【rust/bevy】從game template開始

    【rust/bevy】從game template開始

    操作系統(tǒng):win11 rust版本:rustc 1.77.0-nightly bevy版本:0.12 rust安裝 這里 windows 下建議使用 msvc 版本 bevy 安裝 這里 clone代碼 運行 結(jié)果 template中的例子是2d的,我們稍微修改下 首先增加一個 CameraController ,代碼在 bevy 的例程中也可以找到 再添加一個 SceneSetup ,用于初始化場景和相

    2024年01月18日
    瀏覽(65)
  • Rust :mod.rs和lib.rs中use的作用

    一、mod.rs和lib.rs mod.rs往往是把同一目錄下的n個rs文件綜合在一起的有效方式; lib.rs是一個庫或子庫層次綜合在一起的有效方式; 下面舉個實例來說明。生成一個rusttoc本地庫(由cargo new rusttoc --lib所生成),目錄結(jié)構(gòu)如下: 其中,data.rs文件內(nèi)容如下: 其中,ffi.rs文件內(nèi)容如

    2024年02月07日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包