Slint语言的新变化 Slint 语言的设计结合了新旧元素:在 QML 方面的丰富经验和全新 Canvas 的可能性,现代 HTML/CSS 提供的功能使 UI 设计的某些方面非常方便。 声明组件 Input/Output 属性 表达式中查找顺序的变化 原文链接,https://slint-ui.com/blog/changes-to-the-slint-language.html Github 讨论区,https://github.com/slint-ui/slint/discussions Rust中的作用域线程 TL; DR 作用域线程在循环中等待线程完成,异步版本则不能等到任务完成。
SixtyFPS现已更名为Slint SixtyFPS becomes Slint — Slint Blog 我们将SixtyFPS改名为Slint。 为什么要改变? 什么是Slint? 对于那些从未听说过SixtyFPS Slint的人来说,它是一个用Rust编程语言实现的GUI工具箱。 其核心是声明性的Slint标记语言,它代表了整个用户界面。 用Slint标记语言编写用户界面,用 "真正的" 编程语言编写业务逻辑。 你可以用不同的编程语言使用Slint,比如Rust、C++和JavaScript。 如果你使用的是C++,修改你的CMakeLists.txt以找到Slint包,并针对Slint::Slint目标进行链接。 你可以在这里找到我们新的GitHub仓库:github.com/slint-ui/slint。 我们希望你能与我们的新名称、品牌和我们的最新版本联系起来。
.}, .... }}});...tx.send(PlayerCommand::Pause);...后台线程 $\xrightarrow{消息}$ UI线程全局状态Slint UI支持在.slint文件中声明全局变量,然后在Rust代码中访问/修改该变量的值,这样即可完成UI状态的更新:// ui stateexport global UIState { // 当前播放进度 property <string> lang; // 主题颜色 in-out property <bool> light_ui;}从后台线程添加任务到UI主线程与上文中使用管道发送指令不同,Slint UI提供了一种从后台线程发送指令到UI主线程的简便方式,即通过slint::invoke_from_event_loop(task_closure),将task添加到UI主线程的下一轮事件循环中执行, UI中,一种典型的范式是:UI线程通过管道向后台线程发送数据.slint中定义的全局变量(export global {...})可以在Rust代码中直接使用后台线程通过slint::invoke_from_event_loop
本系列教程对应的代码已开源在 Github zeedle本篇文章介绍Slint UI如何为播放器页面添加多语言支持,让你的应用走向国际!Translations | Slint Docs1. 使用@tr修饰.slint中的字面量就像这样:2. 提取要翻译的字符串打开git bash,输入:find ui -name \*.slint | xargs slint-tr-extractor -o zeedle.pot此命令会找出ui文件夹下所有的 .slint文件,并把这些文件路径作为参数全部传给slint-tr-extractor,后者会提取所有被@tr修饰的字面量到.pot中。 ::compile_with_config("ui/app.slint", cfg).expect("slint build failed");}5.
1.0 文档:https://slint-ui.com/releases/1.0.0/docs/slint/ Slint 可用于为各种操作系统和处理器架构开发 UI,包括 Linux、macOS、Windows Slint 曾经被称为 SixtyFPS,特点是既快又小,“使用 Slint 构建的图形应用程序可以在 RAM 小于 300 kB 的系统上运行,例如 Raspberry Pi Pico,”SixtyFPS 所以 Slint 是有意识地弃用 C++。 该团队表示,他们从头开始构建了 Slint ,考虑了可扩展性、包容性、工具性和跨平台兼容性,能够加快 UI 开发过程。 “1.x 系列标志着 Slint 现在已经从‘开发阶段’毕业,可以用于生产项目了。” 更多阅读: https://slint-ui.com/blog/announcing-slint-1.0.html https://thenewstack.io/dev-news-rust-based-slint-matures-and-shopify-cleans-up
更多请阅读原文:https://gatowololo.github.io/blog/cargo-patch/ slint-ui 项目 slint-ui 项目 0.2.2 版本更新,由 rust 实现,是一个简单 项目地址:https://github.com/slint-ui/slint ---- From 日报小组 @Jancd
coverage, 4/4 lines covered 原文链接:https://rrmprogramming.com/article/code-coverage-in-rust/ grcov tarpaulin Slint 发布 1.1 版本 伴随着更加友好的协议,Slint 这个广受欢迎的 UI 库发布了 1.1 版本。 Microsoft 发布的 fluent2 手册进一步对齐 fluent UI 风格 引入新的 widget 组件,例如 Switch 和 ProgressIndicator OpenGL 的集成 同事,Slint Slint 更新日志:https://slint.dev/blog/slint-1.1-released Slint 协议更新 -- From 日报小组 RustPlumber
ReadMore: https://github.com/rust-lang/rust/pull/93563 Rust 欧洲之声 | Rust 和 Cpp 互操作 本文为 EuroRust 2022 大会上 slint 团队的分享,主题为 Rust and Cpp ,介绍 Slint 中 Rust 和 Cpp 的交互方案和工具 。 本次演讲文稿:https://slint-ui.com/blog/rust-and-cpp.html。
github.com/rust-embedded/cross/tree/master/docker ReadMore:https://kerkour.com/rust-cross-compilation 将 Slint UI 工具包移植到具有 264K RAM 的微控制器 Slint作为跨平台原生 UI 工具包,愿景是为任何设备提供用户界面。 几个月前,我们开始将 Slint 移植到微控制器 (MCU) ReadMore:https://slint-ui.com/blog/porting-slint-to-microcontrollers.html
本系列教程对应的代码已开源在 Github zeedle开始介绍播放器UI的构建部分,但是不会详细讲解Slint UI的设计基础,没有意义,因为官方文档介绍的已经十分详细了,一些基本用法需要借助参考文档熟悉 Slint UI支持使用类SVG指令绘制矢量图标,为了保证UI的风格统一性,这里不使用网络上的图标,直接使用Path指令绘制,具体语法参考Path | Slint Docs。 需要绘制的图标如下:播放/暂停上一曲下一曲播放模式直接给出.slint代码:import { Palette } from "std-widgets.slint";export component NextSongButton ,并松开画笔ArcTo:绘制圆弧,参数比较多,可以参考文档radius-x:X轴半径radius-y:Y轴半径sweep:是否为顺时针方向x, y:目标位置x-rotation:椭圆的X轴旋转角上面.slint
“本文为 EuroRust 2022 大会上 slint 团队的分享,主题为 Rust and Cpp ,介绍 Slint 中 Rust 和 Cpp 的交互方案和工具 。 Slint 介绍 Slint[1] 曾经的名字叫 SixtyFPS ,是 QtQml 引擎核心开发者和维护者出来创业的项目。 Slint 可以有效地为任何显示器开发流畅的图形用户界面:嵌入式设备和桌面应用程序。我们支持多种编程语言,例如 Rust、C++ 和 JavaScript。Slint 也许是 Qt 的替代品。 参考资料 [1] Slint: https://github.com/slint-ui/slint [2] crates.io: https://crates.io/ [3] lib.rs: https /slint/discussions/1847
slint-ui/slinthttps://github.com/slint-ui/slint Stars: 14.5k License: NOASSERTION slint 是一个声明式的 GUI 原生体验:Slint 构建的 GUI 应符合终端用户对本机应用程序的期望 —— 无论是桌面、移动端、Web 还是嵌入式系统。
成为开发高性能、可靠系统的理想选择 原文链接 https://www.thealphadev.com/2024/02/unraveling-power-of-concurrency-in-rust.html Slint 1.4版本发布:新增外观样式及API改进 Slint 1.4版本带来了全新的Cosmic外观样式和许多生活质量改进。 此外,Slint引入了用于JavaScript API的二进制包,现在在macOS、Windows、和Linux上无需从源代码编译即可安装Slint,加快了npm安装步骤。 开发体验也有所改进:if语句中的括号现可省略,自动补全更贴合开发者标识符选择,编译器优化生成更高效的输出,提高了应用程序的编译速度 原文链接 https://slint.dev/blog/slint-1.4
本系列教程对应的代码已开源在 Github zeedle本篇文章介绍Slint UI如何为播放器页面添加按键绑定,核心思路是当窗口聚焦时,扫描用户按键输入,命中指定按键时,自动调用相关回调函数。 Slint UI支持FocusScope来处理上述逻辑:export component MainWindow inherits Window { ...
本系列教程对应的代码已开源在 Github zeedle暗色主题亮色主题图片图片 Slint UI内置全局调色板,支持运行时动态切换明暗主题,这通过更改Palette.color-scheme来实现 yes) {Palette.color-scheme = ColorScheme.light;} else {Palette.color-scheme = ColorScheme.dark;}}注意在Slint
其核心优势包括: 极快且轻量级 与 React 兼容 良好扩展性 提供文档资源和社区支持 slint-ui/slinthttps://github.com/slint-ui/slint Stars: 15.7k License: NOASSERTION slint 是一个声明式的 GUI 工具包,用于为 Rust、C++ 或 JavaScript 应用程序构建原生用户界面。 原生体验:Slint 构建的 GUI 应符合终端用户对本机应用程序的期望 —— 无论是桌面、移动端、Web 还是嵌入式系统。
3.1 基本类型int测试 首先测试基本的int SimpleList<int> slInt(5, 10); std::cout<<slInt<<std::endl; std::cout<<slInt.size 构造函数根据大小n每次拿一个 接下来: SimpleList<int> slInt1; std::cout<<slInt1.size()<<std::endl; // 0 输出如下: ?
) func Strings(x []string) 示例: package main import ( "fmt" "sort" ) func main() { // []int 排序 slInt := []int{5, 2, 6, 3, 1, 4} // unsorted sort.Ints(slInt) fmt.Println(slInt) // 输出 [1 2 3 4 5 6]
5、全开源跨平台UI设计库SLINT,涵盖移动端,桌面,嵌入式和Web,支持单片机 浏览RP2040单片机资源时,发现了这条消息,在2040上的运行效果不错。 https://github.com/slint-ui/slint 框架: 效果: 6、CMSIS-Driver驱动软件包大更,新增LAN8740A和LAN91C111,更新ESP8266, ESP32
当前 Rust UI 框架如何使用 GPU 渲染 当前 Rust 生态已经涌现出一些比较优秀的自带 GPU 渲染的 GUI 框架,比如 Makepad[7] 、slint[8]和 egui[9] ,甚至还有一些 Slint 通过 Rust 第三方库 femtovg(基于 grow 库,一个 GL 接口绑定库)来支持 GPU 渲染。为什么不考虑使用 wgpu 呢? 原因之一是因为可能会失去在iOS/iPadOS/macOS上使用Safari运行演示的能力,因为它仅支持WebGL1;原因之二是因为 slint 在实现之初采用的渲染机制是通过一种遍历树来对 GL 命令进行遍历 /WGSL/ [6] naga: https://github.com/gfx-rs/naga [7] Makepad: https://github.com/makepad/makepad [8] slint : https://slint.rs/ [9] egui: https://github.com/emilk/egui [10] Wezterm: https://github.com/wez/wezterm