Slint的学习

Slint是什么

Slint是一个跨平台的UI工具包,支持windows,linux,android,ios,web,可以用它来构建申明式UI,后端代码支持rust,c++,python,nodejs等语言。

开源地址:https://github.com/slint-ui/slint

镜像地址:https://kkgithub.com/slint-ui/slint

官方文档:https://docs.slint.dev/latest/docs/slint/

学习动机

对rust好奇,想学习除了QT之外的流行的跨平台UI。

其实现在除了QT之外,还有Avalonia/Uno/MAUI可以跨平台,但是,听说rust性能高,而且对申明式UI很感兴趣,想了解下Slint与C#系的Xaml有何不同。

开始

学习视频

https://www.bilibili.com/video/BV1r14y1k7T5

IDE选择

IDE可以选择vscoderustrover,这里,我选择rustrover

环境配置

rust安装

IDE配置

打开RustRover选择上方菜单文件->设置->插件,在marketplace中搜索slint然后点击安装

小试牛刀

按照官网文档指示,新建slint项目要向github拉取模板,由于github经常上不去,所以就没有采用这种做法

我们用另外一种方式:

新建rust项目

bash 复制代码
cargo new slint_first_project

使用rustrover打开刚新建的项目

bash 复制代码
cd slint_first_project
rustrover .

项目结构如下所示:

添加视图并运行

添加slint包的引用

bash 复制代码
cargo add slint

添加build-dependencies

打开Cargo.toml,添加如下内容:

toml 复制代码
[build-dependencies]
slint-build = "1.9.2"

最后Cargo.toml内容如下所示:

添加视图(.slint)

在与src同级的目录添加views文件夹,用于存放.slint文件:

views文件夹中添加MyWindow.slint文件:

MyWindow.slint文件中写入如下申明式UI代码:

json 复制代码
export component MyWindow inherits Window {
    title: "this is my window";
    height: 600px;
    width: 1000px;

    GridLayout {
        spacing: 10px;
        Row{
            Rectangle {
            height: 30px;
            background: red;
            Text {
               text: "top";
                 }
            }
        }
        Row{
            Rectangle {
            background: gray;
            Text {
               text: "center";
                 }
            }

        }
         Row{
            Rectangle {
            height: 30px;
            background: blue;
            Text {
               text: "bottom";
                 }
            }

         }
    }
}

添加build.rs

添加这个,告知主窗体的slint文件在哪里

Cargo.toml中添加build.rs,并写入如下代码:

rust 复制代码
fn main(){
    slint_build::compile("views/MyWindow.slint").unwrap()
}

注意路径,要指向刚新建的MyWindow.slint

在src/main.rs中编写启动函数

rust 复制代码
slint::include_modules!();//让系统知道MyWindow从哪里来的
fn main() {
    MyWindow::new().unwrap().run().unwrap()
}

运行项目

rust 复制代码
cargo run

运行效果如下所示:

相关推荐
dragoooon3413 小时前
[C++——lesson16.STL 学习——【string的模拟实现】]
c++·学习
思成不止于此13 小时前
【MySQL 零基础入门】DQL 核心语法(一):学生表基础查询与聚合函数篇
数据库·笔记·学习·mysql
qq_3863226914 小时前
华为-AI智算网络学习-4 运维与监控实例
学习
这个名字先用着14 小时前
NPN转PNP,PNP转NPN方法
科技·学习·制造
Lynnxiaowen14 小时前
今天我们学习kubernetes内容持久化存储
linux·运维·学习·容器·kubernetes
【上下求索】14 小时前
学习笔记094——Ubuntu 如何部署 frp 客户端服务?
笔记·学习·ubuntu
大胡子大叔15 小时前
【与身俱能】机械臂训练(学习笔记)
笔记·学习
关于不上作者榜就原神启动那件事15 小时前
Redis学习文档
数据库·redis·学习
●VON15 小时前
2025年人工智能新方向:从算力竞赛到智能体生态
人工智能·学习
陈逸轩*^_^*15 小时前
操作系统复习题库(期末速通版)
学习·操作系统·期末复习