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

VS Code中配置使用slint(Rust)的一个小例子

一、写在前面

Rust我已经反复入门6年了,口罩之前2019年,我就买了那本《Rust编程之道》,中间反复拾起、放下,到今天还在入门阶段,为什么会这样的,主要是我关注的Rust在后端功能,比如数学物理仿真、科学计算、量化分析的可用性,觉得他在生态上与Python、Julia等差的还是比较多,所以在等它的生态。

二、想干的事情

用slint作为UI交互,搭建一个简单的UI,用rust实现简单逻辑,通过这个例子,在vs code中把slint与rust的开发环境建好。

点击按钮【点击我】,10秒钟后,按钮改变文字,变成【已点击】。
在这里插入图片描述
10秒后
在这里插入图片描述

三、环境配置

  • 说明:
    本文不做Rust开发环境安装的说明,因为是之前配置好的。
    需要提示的一点就是,请用国内的镜像站来安装,,比如中科大的镜像站,不然容易卡死,详细操作请自行AI搜索。

1、为什么想用slint

我不想用QT,也不想学Web,我只想用rust来进行一些数据处理、科学计算。slint用rust开发,轻量级,我只想做几个按钮和简单参数的交互,Rust重点用来处理计算密集的阶段,数据可视化等阶段其实用python、julia和R更方便。

2、安装slint包

【扩展】—>【搜索slint】—>【install】
在这里插入图片描述
在这里插入图片描述

3、配置rust包的国内镜像地址

在【.cargo】目录下新增一个配置文件,config.toml,内容如下:

[source.crates-io]
replace-with = 'ustc'[source.ustc]
registry = "https://mirrors.ustc.edu.cn/crates.io-index"

为什么要配置,因为在build的时候,会更新一些用到的包,如果用外网,会被卡死。
在这里插入图片描述

4、创建工作区的文件夹

创建一个项目文件夹
在这里插入图片描述

5、创建文件【源码】

在这里插入图片描述

(1)、slint文件

新的UI.slint

import { Button} from "std-widgets.slint";
component MainWindow {in-out property <string> button_text: "点击我";callback on_button_clicked();width: 300px;height: 200px;VerticalLayout {spacing: 20px;alignment: center;Text {text: "Hello, Slint示例";horizontal-alignment: center;vertical-alignment: center;}Button {            text:root.button_text;clicked => {root.on_button_clicked();}}}
}

vs code提供了可视化的预览按钮【Show Preview】
在这里插入图片描述

(2)、rust主逻辑文件

main.rs

slint::include_modules!();
use std::rc::Rc;
use std::cell::RefCell;
use slint::Timer;fn main() -> Result<(), slint::PlatformError> {let ui = MainWindow::new()?;let ui_weak = ui.as_weak();// 创建一个计时器let timer = Rc::new(RefCell::new(Timer::default()));// 点击按钮后启动延时操作ui.on_on_button_clicked({let timer = timer.clone();let ui_weak_outer = ui_weak.clone(); // 克隆一份用于外部闭包move || {let ui_weak_inner = ui_weak_outer.clone(); // 再克隆一份用于计时器闭包timer.borrow_mut().start(slint::TimerMode::SingleShot,std::time::Duration::from_secs(10),move || {if let Some(ui) = ui_weak_inner.upgrade() {ui.set_button_text("已点击".into());}},);}});ui.run()
}

(3)、build设置

build.rs

fn main() {slint_build::compile("src/新的UI.slint").unwrap();
}

(4)、Cargo配置

Cargo.toml

[package]
name = "slint_demo"
version = "0.1.0"
edition = "2021"
build = "build.rs"[dependencies]
slint = "1.12.1"[build-dependencies]
slint-build = "1.12.1"

四、编译、运行、发布

1、编译(Build)

命令:

cargo build

在这里插入图片描述
Build之前,会更新包的版本,如果不用镜像站,会一直卡住转圈圈
在这里插入图片描述
耗时40秒,还能接受。
在这里插入图片描述

2、运行(run)

命令:

cargo run

在这里插入图片描述

在这里插入图片描述

3、发布(release)

命令:

 cargo build --release

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行结果:
在这里插入图片描述

http://www.dtcms.com/a/310591.html

相关文章:

  • 亚马逊广告:如何借助AI玩转长尾词提升ROI
  • 伞状Meta分析重构癌症幸存者照护指南:从矛盾证据到精准决策
  • (28)运动目标检测之随机曲线上的离散点进行插值
  • 金智维董事长廖万里出席2025中国科创投资夏季峰会,共话智能体垂直落地新路径
  • deepseek: 批量处理脚本
  • shell脚本的语法使用及例题
  • Vue.js的核心概念
  • LVDS系列23:Xilinx Ultrascale系ISERDESE3原语(一)
  • 系统开机时自动执行指令
  • Java:JWT 从原理到高频面试题解析
  • 04 基于sklearn的机械学习-梯度下降(上)
  • 什么样的业务需要国内动态IP轮换?
  • 第二篇:Linux 文件系统操作:从基础到进阶
  • RAL-2025 | “藏宝图”驱动的具身导航!HAM-Nav:基于手绘地图引导的机器人导航
  • GitPython08-源码解读
  • 进阶08:C#与SQL Server通信
  • 高效连接,3针M12航空插头助您畅行无阻
  • PSA 制氧装置和VPSA 制氧装置技术特点有什么不同
  • [VL|RIS] ReferSAM
  • windows电脑开机或重启,server不能自启动
  • 关税战火中的技术方舟:新西兰证券交易所的破局之道 ——从15%关税冲击到跨塔斯曼结算联盟,解码下一代交易基础设施
  • 开发后台管理系统的注意事项
  • 26考研|数学分析:曲线(面)积分·三大公式
  • Windows系统优化命令-记录
  • 全国增值税发票查验流程-批量核验-接口集成简便高效
  • 四、基于SpringBoot,MVC后端开发笔记
  • opencv-python的GPU调用
  • 在线免费的AI文本转语音工具TTSMaker介绍
  • U-Mail邮件系统-全面适配信创环境的国产邮件系统
  • 什么是大端?什么是小端?如何验证?