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

<Rust>egui学习之部件(十三):如何为文本添加链接Link和超链接HyperLink功能?

前言
本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析,主要讲解egui的源代码、部件属性、如何应用。

环境配置
系统:windows
平台:visual studio code
语言:rust
库:egui、eframe

概述
本文是本专栏的第十三篇博文,主要讲述链接和超链接部件的使用。

事实上,类似于iced,egui都提供了示例程序,本专栏的博文都是建立在官方示例程序以及源代码的基础上,进行的实例讲解。
即,本专栏的文章并非只是简单的翻译egui的官方示例与文档,而是针对于官方代码进行的实际使用,会在官方的代码上进行修改,包括解决一些问题。

系列博客链接:
1、<Rust>egui学习之小部件(一):如何在窗口及部件显示中文字符?
2、<Rust>egui学习之小部件(二):如何在egui窗口中添加按钮button以及标签label部件?
3、<Rust>egui学习之小部件(三):如何为窗口UI元件设置布局(间隔、水平、垂直排列)?
4、<Rust>egui学习之小部件(四):如何在窗口中添加滚动条Scroll部件?
5、<Rust>egui学习之小部件(五):如何在窗口中添加图像部件?
6、<Rust>egui学习之小部件(六):如何在窗口中添加菜单栏部件?
7、<Rust>egui学习之小部件(七):如何在窗口中添加颜色选择器colorpicker部件?
8、<Rust>egui学习之小部件(八):如何在窗口中添加滑动条slider部件?
9、<Rust>egui学习之小部件(九):如何在窗口中添加下拉列表combobox部件?
10、<Rust>egui学习之小部件(十):如何在窗口中添加复选框checkbox部件?
11、<Rust>egui学习之部件(十一):如何在窗口中添加单选框radiobutton部件?
12、<Rust>egui学习之部件(十二):如何添加右键菜单?

部件属性

在egui里,有两种链接功能,一种是link,如果你需要链接到网页,则使用hyperlink。这里的链接是附加于文本上的,使文本具备可以点击的功能。
link:

pub struct Link {   
    text: WidgetText, 
}

impl Link { 
    pub fn new(text: impl Into<WidgetText>) -> Self { 
        Self { text: text.into() } 
    }
}

hyperlink:

pub struct Hyperlink {      
    url: String,
    text: WidgetText,
    new_tab: bool,
}

impl Hyperlink {
    #[allow(clippy::needless_pass_by_value)]
    pub fn new(url: impl ToString) -> Self {
        let url = url.to_string();
        Self {
            url: url.clone(),
            text: url.into(),
            new_tab: false,
        }
    }

    #[allow(clippy::needless_pass_by_value)]
    pub fn from_label_and_url(text: impl Into<WidgetText>, url: impl ToString) -> Self {
        Self {
            url: url.to_string(),
            text: text.into(),
            new_tab: false,
        }
    }

    /// Always open this hyperlink in a new browser tab.
    #[inline]
    pub fn open_in_new_tab(mut self, new_tab: bool) -> Self {
        self.new_tab = new_tab;
        self
    }
}

看一下实际使用:

if ui.link("link").clicked(){   
                self.linkflag=true;
            };
            ui.hyperlink("https://www.baidu.com");

UI显示:
在这里插入图片描述
二者的区别是,link只能为文本标签添加点击功能,点击后可以触发反馈,而hyperlink可以将文本为网址的链接跳转到网页 。

代码稍作修改:

ui.horizontal(|ui|{
                if ui.link("link").clicked(){  
                    if self.linkflag{
                        self.linkflag=false;
                    }else{
                        self.linkflag=true;
                    }
                };
                if self.linkflag{
                    ui.label("link");
                }
            });
            
           
            ui.hyperlink("https://www.baidu.com");
演示

在这里插入图片描述


http://www.kler.cn/a/327541.html

相关文章:

  • Mac os 系统上如何开启远程登录的 ssh 22 端口
  • ubuntu显示管理器_显示导航栏
  • 【Linux学习】【Ubuntu入门】1-4 ubuntu终端操作与shell命令1
  • “fc-async”提供了基本的异步处理能力
  • Spring Boot教程之Spring Boot简介
  • 2024 同一个网段,反弹shell四种方法【linux版本】bash、python、nc、villian反弹shell图解步骤
  • 基于J2EE技术的高校社团综合服务系统
  • 设计模式---代理模式
  • webpack使用
  • 【Spring Boot 入门一】构建你的第一个Spring Boot应用
  • ECMAScript 详解
  • 新版本Android Studio如何新建Java code工程
  • MATLAB中数据导入与导出的全面指南
  • Ionic 颜色:探索前端开发的调色板
  • Spring Boot实现足球青训俱乐部管理自动化
  • ubuntu20.04系统安装zookeeper简单教程
  • Paddlets时间序列集成模型回测实战:MLPRegressor、NHiTSModel与RNNBlockRegressor
  • # VirtualBox中安装的CentOS 6.5网络设置为NAT模式时,怎么使用SecureCRT连接CentOS6.5系统?
  • 计算机毕业设计 基于Python的广东旅游数据分析系统的设计与实现 Python+Django+Vue Python爬虫 附源码 讲解 文档
  • WPF中的switch选择
  • Visual Studio-X64汇编编写
  • stm32单片机学习 - MDK仿真调试
  • Redis篇(缓存机制 - 多级缓存)(持续更新迭代)
  • MySQL—表优化
  • 平衡二叉搜索树删除的实现
  • Spring Cloud全解析:服务调用之OpenFeign集成OkHttp