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

运行效果如下所示:

相关推荐
weixin_4093831214 分钟前
简单四方向a*学习记录10 重写前面的所有逻辑
学习
喏喏心1 小时前
深度强化学习:价值迭代与Bellman方程实践
人工智能·python·学习·机器学习
kkkkkkkkk_12011 小时前
【强化学习】06周博磊强化学习纲要学习笔记——第三课下
笔记·学习·强化学习
白杨SEO营销1 小时前
白杨SEO:看“20步:从0-1做项目的笨办法”来学习如何选一个项目做及经验分享
前端·学习
无所事事的程序员1 小时前
Claude指令学习
学习
学习路上_write2 小时前
AD5293驱动学习
c语言·单片机·嵌入式硬件·学习
菥菥爱嘻嘻2 小时前
组件测试--React Testing Library的学习
前端·学习·react.js
白帽子黑客罗哥2 小时前
零基础转行渗透测试 系统的学习流程(非常详细)
学习·网络安全·渗透测试·漏洞挖掘·护网行动
李洛克073 小时前
RDMA 编程完整学习路线图
学习·rdma·路线
你想知道什么?3 小时前
JNI简单学习(java调用C/C++)
java·c语言·学习