前言
用JavaFx写个小工具玩,启动内存直接上200,就又想到了Rust。之前偶尔会关注RustGUI方案,加上网上冲浪又看到一些,算是对之前了解到的内容做下汇总,也算是之前的轻度使用心得
汇总表
名称 | Star | 渲染方式 | 备注 |
---|---|---|---|
tauri-apps/tauri | 78.7k | WebView | 对不喜欢浏览器套皮的人不适合 |
emilk/egui | 20.4k | 样式不适合 | |
iced-rs/iced | 23.1k | 没找到表格控件 | |
redox-os/orbtk | 3.8k | 没试过 | |
slint-ui/slint | 15.6k | 有一套自己单独的DSL。基本功能感觉比较完善,但是控件还是偏少。很多人说也有协议问题 | |
DioxusLabs/dioxus | 19k | WebView | 没试过 |
linebender/xilem | 3.1k | 说是实验性框架,还没试过 | |
gtk-rs/gtk4-rs | 1.7k | GTK绑定 | GTK应用在Windows下总感觉差点意思 |
Relm4/Relm4 | 1.3k | gtk-rs封装 | 编译时pkg-config有问题,好像会把我环境变量的路径按Linux下的冒号切割导致找不到对应配置 |
marc2332/freya | 1.2k | Skia | 没试过 |
fltk-rs/fltk-rs | 1.6k | 太丑了 | |
gabdube/native-windows-gui | 1.9k | Win32 | 写写简单界面还不错,稍微复杂点的纯撸Rust代码,还是太累了 |
rodrigocfd/winsafe | 455 | Win32 | 可以使用Windows Resources Edit。但是是绝对定位,没有布局管理器 |
rust-qt/ritual | 1.2k | Qt绑定 | 没更新了 |
KDAB/cxx-qt | 942 | QML | QML可以使用Rust定义的QObject,对QML不是很了解没深究。要是支持拖拉拽的QtWidgets就好了 |
kenz-gelsoft/wxRust2 | 76 | WxWidgets绑定 | 感觉还不成熟,作者自己也说还在早期开发阶段,没太多时间弄这个 |
总结
- 如果只是想写点小工具使用,并且对跨平台需求没那么强,建议还是使用WinForm或者WPF,会C++就QtWidgets。
- 备选方案有Lazarus,不喜欢Pascal有Go语言绑定GoVcl,可惜作者精力有限Rust-Vcl项目停了。
- 不太介意速度可以使用PySide
- Rust方面,能接受浏览器套皮的就使用Tauri,不能接受就slint
- 如果是要比较复杂的应用或者是做生产应用,我的建议是我别建议
写这种小玩意,折腾来折腾去Windows还得是Winform & Qt。或者如果不介意内存可以用用Java(
半成品软件截图
注:
- 内存截图是在idea内Debug启动时的占用
最开始是想使用GraalVM编译,但是我是用Kotlin写的,编译完后启动有点问题,等后面再看看和Kotlin没关系,是gluonfx-maven-plugin
的javafxStaticSdkVersion
默认版本和Maven不一致导致的