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

news2024/9/27 14:45:44

前言
本专栏是关于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.coloradmin.cn/o/2170265.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ROS与无人驾驶学习笔记(零)——问题汇总

文章目录 ubuntu相关问题 ubuntu中中文输入法没有输入框 在ubuntu中使用双拼输入 ros卸载重装报错的问题 在学习ubuntu、ros以及无人驾驶过程中遇到的问题我都记在在这里 ubuntu相关问题 ❤ 2024.9.20 ❤ ubuntu中中文输入法没有输入框 因为我用的是arm平台&#xff0c;于…

软件对比 | 历史气象数据哪里找?

中国气象网和羲和能源气象大数据平台两个平台当然没有“绝对”哪个好的说法&#xff0c;各自特点都在下图进行总结&#xff0c;到底用哪个还是根据自己需求自己抉择。 希望可以帮助到大家~

Maven中 <parent > 的<version>可以使用变量吗

答案&#xff1a; 不可以&#xff01; 在 Maven 中&#xff0c;父 POM 的 <version> 元素不能直接使用变量。父 POM 的版本号必须是硬编码的&#xff0c;不能通过变量来动态设置。这是因为父 POM 的版本号在子模块中引用时&#xff0c;需要是一个固定的值&#xff0c;以…

记录:ubuntu20.04的安装和必要的开发准备

记录ubuntu20.04的安装和必要的开发准备 准备1. 安装ubuntu20.04时的Tips2. 屏幕亮度调节问题3. 解决 "No Wi-Fi Adapter Found"4. Nvidia Driver && cuda5. 修改安装源6. ssh 远程开发7. 安装 anaconda 准备 没有装双系统&#xff0c;只有 ubuntu20.04&…

【ZYNQ 开发】填坑!双核数据采集系统LWIP TCP发送,运行一段时间不再发送且无法ping通的问题解决

问题描述 之所以说是填坑&#xff0c;是因为之前写了一篇关于这个双核数据采集系统的调试记录&#xff0c;问题的具体表现是系统会在运行一段时间后&#xff08;随机不定时&#xff0c;长了可能将近两小时&#xff0c;短则几分钟&#xff09;&#xff0c;突然间就不向电脑发送数…

电脑文件夹如何加密保护?文件夹加密方法有哪些?

在信息时代&#xff0c;数据安全已成为广大用户关注的焦点。电脑文件夹中往往存放着重要的文档、照片、账单等隐私信息&#xff0c;一旦泄露&#xff0c;后果不堪设想。因此&#xff0c;为电脑文件夹加密保护显得尤为重要。本文将介绍几种常见的文件夹加密方法&#xff0c;帮助…

【二叉平衡搜索树】Treap

前置 本篇是平衡树-treap的补充学习笔记。 Treap - 树堆 学习基础&#xff1a;适合一定基础的&#xff1a;比如&#xff0c;实现了经典二叉搜索树&#xff08;常用的几个函数写过&#xff09;&#xff0c; 和二叉堆&#xff08;数组的上浮下沉会写吗&#xff1f;&#xff09;&a…

LDRA Testbed(TBrun)软件集成测试(部件测试)_操作指南

系列文章目录 LDRA Testbed软件静态分析_操作指南 LDRA Testbed软件静态分析_自动提取静态分析数据生成文档 LDRA Testbed软件静态分析_Jenkins持续集成&#xff08;自动静态分析并用邮件自动发送分析结果&#xff09; LDRA Testbed软件静态分析_软件质量度量 LDRA Testbed软件…

工厂模式和抽象工厂模式的实验报告

1. 实验结果&#xff1a; 记录并附上不同模型对象&#xff08;例如&#xff1a;士兵、机器人、骑士&#xff09;的展示效果截图。 2. 性能分析&#xff1a; 记录并比较抽象工厂模式与直接实例化的性能测试结果&#xff0c;分析它们在不同数量级对象创建时的开销与效益。 2.1…

系统架构设计师 - 案例特训专题 - 数据库设计篇

案例特训专题 - 数据库设计篇 数据库设计篇规范化与反规范化 ★★★规范化 - 范式反规范化 数据库索引数据库视图数据库分区分表分库分区分区的常见方式 分表分库 分布式数据库 ★★★NoSQL ★★★其他数据库扩展知识 ★★★数据库性能优化集中式数据库优化分布式数据库优化 大…

Thingsboard规则链:Related Device Attributes节点详解

引言 在物联网&#xff08;IoT&#xff09;领域&#xff0c;Thingsboard作为一款强大的物联网平台&#xff0c;其规则链功能为企业提供了高度定制化的数据处理和自动化控制方案。其中&#xff0c;Related Device Attributes节点是一个特别实用的组件&#xff0c;它能够访问和操…

sql server每天定时执行sql语句

sql server每天定时执行sql语句 1、打开SQL Server Management Studio 2、鼠标右击【SQL Server 代理】&#xff0c;选择【启动(S)】&#xff0c;如已启动&#xff0c;可以省略此步骤&#xff1b; 3、右键&#xff0c;新建-》作业&#xff0c;在作业上-》新建作业&#xff…

超全攻略|手把手带你0经验转行产品经理

▌想入行&#xff0c;你需要先知道怎么才能走得更顺利 现在&#xff0c;如果有人问我&#xff0c;说重新回答大学毕业&#xff0c;刚要入行产品经理的时候&#xff0c;知道哪些事情&#xff0c;能让自己在后面的产品经理生涯中走的更顺利。 ❓是知道面试的套路&#xff0c;能…

PatrOwl:一款开源可扩展的安全协调运营平台

关于PatrOwl PatrOwl是一款开源可扩展的安全协调运营平台&#xff0c;广大研究人员可以使用该工具完成组织内部的安全协调运营。 该工具是一种可扩展、免费且开源的解决方案&#xff0c;用于协调安全操作。其中的PatrowlManager是前端应用程序&#xff0c;用于管理资产、实时审…

一文读懂常见的几种 LangChain 替代品,看到就是赚到!!

前言 在 LLM &#xff08;大规模语言模型&#xff09;应用开发领域&#xff0c;开源框架扮演着至关重要的角色&#xff0c;为广大开发者提供了强大的工具支持。作为这一领域的领军者&#xff0c;LangChain 凭借其创新设计和全面功能赢得了广泛赞誉。但与此同时&#xff0c;一些…

小程序开发平台源码系统 各行各业适用的小程序开的平台 带完整的安装代码包以及搭建部署教程

系统概述 本系统采用模块化设计&#xff0c;包含前端展示层、后端逻辑处理层、数据库存储层以及管理后台等多个核心组件。前端展示层负责小程序的界面设计与交互体验&#xff1b;后端逻辑处理层则负责数据处理、业务逻辑实现及与第三方服务的对接&#xff1b;数据库存储层用于…

如火似茶的AI Bots到底有什么现实意义呢?

你好&#xff0c;我是三桥君 自AIGC潮流兴起以来&#xff0c;基于自注意力机制的大模型成为资本市场疯狂炒作的对象。然而&#xff0c;经过一年多的狂热之后&#xff0c;市场逐渐回归理性。这时候会有人担心&#xff0c;大模型是否会像元宇宙、Web 3.0&#xff0c;甚至比特币那…

低空经济腾飞,无人机飞手人才培养先行

低空经济的腾飞为无人机飞手人才的培养提出了迫切需求&#xff0c;并且这一领域的发展已经引起了广泛的关注。以下是对“低空经济腾飞&#xff0c;无人机飞手人才培养先行”的详细分析&#xff1a; 一、低空经济的腾飞背景 低空经济作为新兴的经济形态&#xff0c;正以前所未…

如何搭建适合自己的数据中台?六步法

数据中台是企业数据价值实现的能力框架&#xff0c;包括数据集成、数据开发、数据管理、数据服务、数据资产运营等能力&#xff0c;是企业业务数据化的承载体&#xff0c;是企业业务通过数据视角的一种呈现&#xff0c;担负了企业数字化所需的核心综合数据能力。但由于数据中台…

fastzdp_redis第一次开发, 2024年9月26日, Python操作Redis零基础快速入门

提供完整录播课 安装 pip install fastzdp_redisPython连接Redis import redis# 建立链接 r redis.Redis(hostlocalhost, port6379, db0)# 设置key r.set(foo, bar)# 获取key的值 print(r.get(foo))RESP3 支持 简单的理解: 支持更丰富的数据类型 参考文档: https://blog.c…