近日,Slint 发布了 1.3 版本,引入许多增强开发体验的新功能和改进。来看一下 Slint 的主要更新点吧:
为 Windows 和 Mac 引入新的默认原生样式
新版本Slint中 更改默认风格样式,以提供更真实的 Windows 和 macOS 界面。Windows
上采用 Fluent
风格样式,Mac
上则采用 Cupertino
风格样式。对于 Linux,Slint 继续使用可用的 Qt,这样可以确保始终如一的"原生"Linux 感觉。
Mac 上的Cupertino
风格:
Windows 上的 Fluent
风格:
基于 napi-rs 的 NodeJS API
可以使用napi-rs
crate 进行 NodeJS 集成。Slint 现在与所有最新的 NodeJS 版本兼容,并允许集成到 NodeJS 事件循环中。如果你在寻找 Electron 的替代方案的开发人员,并想在 JavaScript 中创建轻量级 GUI 应用程序,可以考虑使用 Slint。
如果你想要探索了解更多关于在JavaScript 中的 使用 Slint 的知识,可以参阅 Slint 官方的JavaScript 文档和教程。
启动 Android 版移植开发工作
Slint 开发团队已开始尝试将 Slint 引入 Android,不过目前它还没有准备好投入生产(笔者猜测是方案还不够成熟,既然已经迈出这一步,强烈期待一下),喜欢折腾的同学可以按官方教程尝下鲜。
在 Android 上使用 Slint 构建 GUI ,需要借助 android-activity
crate 的 i-slint-backend-android-activity
。
PS: 这是一个内部 crate,不遵循 semver 版本标准。
可以查看使用文档: Android后端的文档 和 SlintAndroid
简化导入组件库的步骤
现在可以轻松地将组件库导入到代码库中。新版本附带了支持从外部库导入组件的基础设施。库搜索路径在构建脚本中或通过环境变量定义。
以下例子演示了将代码从 foo
库导入 FooWidget
rust
import { FooWidget } from "@foo";
更多改进
Slint 1.3
版本包含许多错误修复和增强功能:
- Slint VSCode 插件优化了重构功能;
- 改进了与
rust-analyzer
分析器的slint!
宏集成; TouchArea
现在可以接收滚动事件,GridLayout
可以有不同的水平或垂直间距值,更多缓动曲线(easing curves)可用于自定义动画,允许一个新组合框预览选择样式;
Slint 1.3.0 版本升级日志
General
- 最低 Rust 版本是 1.70。
- 环境
SLINT_DEBUG_PERFORMANCE
变量现在也与软件渲染器兼容。 - 修复了省略或对齐的多行文本中的文本渲染和光标定位问题。
- 更改了默认样式,Windows 上默认
fluent
,macOS 上默认为cupertino
。 - LinuxKMS 后端:添加了对绝对运动指针事件的支持,修复了对缩放屏幕上触摸输入的支持,以及改进了 EGL 渲染的编码器/CRTC 处理。
- Skia 渲染器/winit 后端:当 GPU 加速不可用时,回退到 Skia 软件渲染。
- 修复了在同一回调中更改模型数据后访问回调中的模型数据不会反映更新的错误。(#3740)
Slint
- 向
InputType
枚举添加了Number
Decimal
变体。 GridLayout
组件新增spacing-horizontal
和spacing-vertical
属性.- 修复了结构数组数组中的转换 (#3574)。
- 添加
scroll-event
回调到TouchArea
. - 添加了对函数的
protected
支持。 ComboBox
可以通过滚动事件更改选择。SpinBox
可以通过滚动事件增加和减少值。- 添加
focus-changed-event
回调到FocusScope
. - 添加了许多新的缓动曲线(easing curves)。
- 添加了
Spinner
。
JavaScript
- 移植到napi-rs。
- 更新API。
Rust
- 改进了 rust-analyzer 对
slint!
宏的支持。 - 添加
source_model()
到MapModel
,FilterModel
,SortModel
,ReverseModel
以访问内部模型。
C++
- 消除了生成代码中对 C++ 异常的需要。
- 添加了仅构建 Slint 编译器或使用外部编译器的功能。
- ESP-IDF:在交换帧缓冲区之前等待垂直同步。
- 修复了从 Slint 访问空模型时发生的崩溃。
LSP
- 添加了"Wrap元素"、"Remove元素"、"Repeat元素"和"Make conditional"代码操作。
- 在预览中添加了带有样式选择器的工具栏。
参考
- Slint 升级公告:slint.dev/blog/slint-...
- Slint 升级日志:github.com/slint-ui/sl...
- Slint Docs:slint.dev/docs
- Slint 语言文档:slint.dev/releases/1....
- Slint Rust 文档: slint.dev/releases/1....