Slint 新手指南:用 3 行代码构建原生图形界面的完整上手教程
2026/9/16 4:50:33 网站建设 项目流程

Slint 新手指南:用 3 行代码构建原生图形界面的完整上手教程

【免费下载链接】slintSlint is an open-source declarative GUI toolkit to build native user interfaces for Rust, C++, JavaScript, or Python apps.项目地址: https://gitcode.com/GitHub_Trending/sl/slint

Slint 是一个开源的声明式 GUI 工具包:界面用.slint标记语言描述,业务逻辑用 Rust、C++、Python 或 JavaScript 编写,编译后在桌面、嵌入式和 Web(WASM)平台生成原生界面。本教程面向第一次接触 Slint 的开发者,按"先跑通、再迭代、后适配"的场景组织,全部命令可直接复制执行。

Slint 安装与开发环境准备

最短路径只有一行:用 Rust 工具链安装界面预览工具slint-viewer(1.92 及以上版本均可)。

cargo install slint-viewer

它用于实时预览.slint文件、离线渲染截图和无窗口语法检查,是日常迭代的核心工具。若不想从源码安装,也可以直接运行仓库内的示例。

组件用途要求
Rust + cargo构建与运行应用1.92 及以上,rustc --version查看
slint-viewer预览.slint文件cargo install slint-viewer
Linux 系统依赖窗口与字体后端libxcb-shape0-devlibxcb-xfixes0-devlibxkbcommon-devlibfontconfig-dev
macOS基础工具链xcode-select --install
Windows编译工具MSVC Build Tools,且rustup default stable-x86_64-pc-windows-msvc
Qt(可选)原生控件外观qmakePATH中时自动启用 qt 风格

以上要求摘自仓库内的构建说明:docs/building.md。Skia 渲染器仅在部分平台提供预编译二进制,默认使用 femtovg 渲染器时无需额外安装。

从 0 到第一次成功运行:Slint Rust 应用

仓库自带四个语言的完整示例,位于 examples/,其中 examples/memory/ 是最小的完整应用。直接运行:

cargo run --manifest-path examples/Cargo.toml -p memory

窗口出现即表示环境配置成功。若只想看 5 行代码的最小形式,可在任意 Rust 项目中声明依赖slint = "1.16",然后在main.rs里用宏内联描述界面:

slint::slint!{ export component HelloWorld { Text { text: "hello world"; color: green; } } } fn main() { HelloWorld::new().unwrap().run().unwrap(); }

界面与逻辑分离是 Slint 的基本约定:.slint文件负责布局、属性和事件,宿主语言负责数据与外部系统调用。slint!宏把界面编译进二进制;文件较长时改用独立的.slint文件加include_modules!加载,结构见 api/rs/slint/README.md。

日常开发循环:slint-viewer 实时预览与检查

修改.slint文件后不必每次重新编译整个应用,slint-viewer --auto-reload会监听文件变化并热重载窗口:

slint-viewer --auto-reload examples/gallery/gallery.slint

另两个高频参数:--check编译并打印诊断、不开窗口,退出码 0/1 可接入 CI;--screenshot把组件渲染成图片后退出,适合无显示器的环境:

slint-viewer --check ui/app.slint slint-viewer --screenshot out.png ui/app.slint

编辑器里安装 VS Code 扩展(editors/vscode/)可再获得自动补全与实时预览,LSP 服务源码在 tools/lsp/。没有编辑器支持时,viewer 的--auto-reload就是替代品。

非默认环境适配:CMake、npm、uv 与交叉编译

Rust 之外,三种语言栈各自有最短启动路径,依赖与命令如下:

语言栈构建工具关键依赖运行命令
C++CMake 3.21+支持 C++20 的编译器(GCC 10 / MSVC 2022)cmake -B build && cmake --build build
Node.jsnpmNode.js 20+npm install && npm start
Pythonuv无额外要求uv sync && uv run main.py

C++ 项目用slint_target_sources把界面文件挂到目标上,例如 examples/carousel/。交叉编译推荐cross,仓库根目录已附带 Cross.toml:

cross build --target armv7-unknown-linux-gnueabihf --manifest-path demos/Cargo.toml -p printerdemo --release

把产物拷到树莓派后以DISPLAY=:0 ./printerdemo启动。更细的 CMake 与跨平台步骤见 docs/building.md 的 Cross-Compiling 一节。

出错时去哪里查:Slint 常见错误速查

现象原因一句话解法
Linux 下链接或启动报xcbfontconfig找不到系统库缺失按安装一节的apt列表安装开发包
CMake 报找不到SlintConfigC++ 库未安装或未指向安装目录先构建并cmake --install,再设SLINT_DIRCMAKE_PREFIX_PATH
Windows 克隆仓库后文件缺失未启用符号链接开发者模式下重新克隆并启用core.symlinks
嵌入式设备黑屏或崩溃GPU 依赖不满足换 CPU 软件渲染后端(softwarerenderer)
slint-viewer --check退出码非 0.slint语法或类型错误按诊断输出的行号修改后重新--check
CMake 首次构建极慢首次从源码拉取并编译 Slint 运行时属正常现象,后续增量构建很快

常用命令速查表

命令作用典型参数
cargo install slint-viewer安装预览工具
cargo run --manifest-path examples/Cargo.toml -p memory运行 Rust 示例-p指定示例名,--release优化构建
slint-viewer <file.slint>预览界面-从标准输入读取
slint-viewer --auto-reload <file.slint>监听文件变化热重载--save-data互斥
slint-viewer --check <file.slint>编译检查,退出码 0/1可接入 CI
slint-viewer --screenshot out.png <file.slint>渲染截图并退出SLINT_SCALE_FACTOR调整缩放
cmake -B build && cmake --build buildC++ 构建-GNinja加速
cross build --target armv7-unknown-linux-gnueabihf ...交叉编译--manifest-path指定 workspace

项目目录约定:Slint 仓库结构

slint/ ├── Cargo.toml # 根 workspace:核心库与工具 ├── internal/ # 编译器、运行时、渲染器 ├── api/ # Rust / C++ / Node.js / Python 绑定 ├── examples/ # 独立 workspace,各语言可运行示例 ├── demos/ # 独立 workspace,完整演示应用 ├── tests/ # 独立 workspace,测试驱动 ├── tools/ # slint-viewer、LSP 服务器、SlintPad ├── editors/ # VS Code、Kate、Zed 等编辑器集成 └── docs/ # 文档站点与构建说明

根 workspace 承载库与工具;examples/demos/tests/各自独立,共享同一个target/目录,公共库只编译一次,rust-analyzer 也因此保持轻量。单语言项目的典型结构则是ui/*.slint存界面、src/存宿主语言逻辑、Cargo.toml(或CMakeLists.txt)声明依赖。

下一步

  • 通读 examples/ 中的 gallery、carousel、memory,对照各自的Cargo.toml理解依赖组织方式。
  • 在 VS Code 中打开任意.slint文件,验证 editors/vscode/ 扩展的补全与实时预览。
  • 按 docs/building.md 的 Cross-Compiling 章节,用cross构建一份树莓派可运行的产物,完成到嵌入式设备的第一步。

【免费下载链接】slintSlint is an open-source declarative GUI toolkit to build native user interfaces for Rust, C++, JavaScript, or Python apps.项目地址: https://gitcode.com/GitHub_Trending/sl/slint

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询