本文作者对 43 种 Rust GUI 库进行调研,旨在实现文本标签与输入框联动功能,且考虑了 Windows 系统支持、屏幕阅读器可访问性及 IME 输入等因素。
众多库表现各异,如 Azul、CXX-Qt 等存在链接错误难以运行;Cushy、Floem 等在可访问性或 IME 支持上有缺陷;Dioxus、Slint 等综合表现较好。作者认为虽无完美选择,但相比 2021 年已有更多合理选项。
库名
是否可用
屏幕阅读器可访问性
IME 支持情况
问题描述
Azul
链接错误,无法运行
未提及
下载预构建.dll 困难,示例代码无法运行,版本混乱
cacao
仅适用于 macOS
不支持 Windows 系统
core - foundation
Crux
无桌面目标
实际不支持桌面 GUI 开发,仅用于移动和 Web
Cushy
是
否
部分支持
示例代码有错误,运行时产生大量 Vulkan/DirectX 12 错误,Windows Narrator 无法识别内容
CXX-Qt
安装 Qt 需注册,示例代码有 1058 个链接错误
Dioxus
通过 WebView2/WebKitGTK 支持桌面开发,类似 React,文本和 IME 功能正常
Dominator
仅用于 Web
无桌面支持
egui
设置简单,默认字体不支持日语字符,Tab 键选择汉字时被吃掉
Floem
用于 Lapce IDE,布局构建方式奇怪,缺乏可访问性和 IME 支持
fltk
需额外 crate
布局系统不佳,添加组件方式不友好
flutter_rust_bridge
部分支持,但状态管理混乱
与 Flutter 集成复杂,输入字段状态管理有问题
Freya
依赖旧版本 Dioxus,渲染和文本识别存在问题
fui
qmake 错误,无法构建
缺乏文档,构建失败
GemGui
技术上可用,但依赖问题多
依赖 Python,运行方式繁琐
GPUI
缺乏基本文本输入部件,文档和安装不完善
GTK 3
不再维护
已过时
GTK 4
窗口装饰和可访问性存在问题
Iced
受 Elm 启发,在可访问性和 IME 支持上有缺陷
imgui
与游戏引擎结合较好,但初始设置繁琐,支持多种渲染器导致选择困难
KAS
教程过时,状态管理设计不清晰
kittest
仅用于测试
仅支持 egui 测试
Leptos
Web 前端框架,原生 GUI 支持不足
lvgl
C 依赖问题
配置在 Windows 上有问题
Makepad
缺乏文档,可访问性支持差
masonry
内容可识别但位置错误
是,但有临时乱码
API 使用不太方便
Maycoon
无文本输入部件
太新,功能不完整
Pax
无 Windows 支持
仅支持 macOS
qmetaobject
不支持 windows - msvc
与特定目标不兼容
relm
使用不再维护的 GTK 3
依赖过时库
Relm4
基于 GTK 4,继承其问题
Ribir
状态管理机制有问题
Rinf
不使用 Rust 构建 GUI
不符合调研需求
rui
状态管理可能较繁琐
Slint
有自己的 DSL,数据绑定功能巧妙,默认字体可能存在问题
Tauri
前端与后端通信存在问题,缺乏类型安全
tinyfiledialogs
非通用 GUI 库
功能有限,无法完成任务
Tk
安装和使用复杂,依赖外部库
Vizia
结构可识别但内容不可识别
文本字段聚焦时样式有问题
WebRender
太低级,不适用于 GUI 开发
无 GUI 组件,是低级别图形库
windows
不熟悉 Win32 API
缺乏 GUI 开发指导
WinSafe
手动布局不佳,存在窗口创建时序问题
Xilem
缺乏版本管理
本次调研涵盖 43 种 Rust GUI 库,各库在功能、易用性、可访问性和 IME 支持等方面表现差异较大。
作者推荐了几个表现较好的库:喜欢 CSS 布局可选 Dioxus;青睐 DSL 驱动的用户可选择 Slint;想避免 DSL 和宏,只用常规 Rust 代码的可考虑 egui;愿意早期投资的可关注 Xilem。虽然没有绝对完美的选择,但相比 2021 年,如今有更多合理的选项可供开发者选择。
原文:https://www.boringcactus.com/2025/04/13/2025-survey-of-rust-gui-libraries.html
评论删除后,数据将无法恢复
2025 年 Rust GUI 库调研
本文作者对 43 种 Rust GUI 库进行调研,旨在实现文本标签与输入框联动功能,且考虑了 Windows 系统支持、屏幕阅读器可访问性及 IME 输入等因素。
众多库表现各异,如 Azul、CXX-Qt 等存在链接错误难以运行;Cushy、Floem 等在可访问性或 IME 支持上有缺陷;Dioxus、Slint 等综合表现较好。作者认为虽无完美选择,但相比 2021 年已有更多合理选项。
库名
是否可用
屏幕阅读器可访问性
IME 支持情况
问题描述
Azul
链接错误,无法运行
未提及
未提及
下载预构建.dll 困难,示例代码无法运行,版本混乱
cacao
仅适用于 macOS
未提及
未提及
不支持 Windows 系统
core - foundation
仅适用于 macOS
未提及
未提及
不支持 Windows 系统
Crux
无桌面目标
未提及
未提及
实际不支持桌面 GUI 开发,仅用于移动和 Web
Cushy
是
否
部分支持
示例代码有错误,运行时产生大量 Vulkan/DirectX 12 错误,Windows Narrator 无法识别内容
CXX-Qt
链接错误,无法运行
未提及
未提及
安装 Qt 需注册,示例代码有 1058 个链接错误
Dioxus
是
是
是
通过 WebView2/WebKitGTK 支持桌面开发,类似 React,文本和 IME 功能正常
Dominator
仅用于 Web
未提及
未提及
无桌面支持
egui
是
是
部分支持
设置简单,默认字体不支持日语字符,Tab 键选择汉字时被吃掉
Floem
是
否
否
用于 Lapce IDE,布局构建方式奇怪,缺乏可访问性和 IME 支持
fltk
是
需额外 crate
是
布局系统不佳,添加组件方式不友好
flutter_rust_bridge
部分支持,但状态管理混乱
是
部分支持,但状态管理混乱
与 Flutter 集成复杂,输入字段状态管理有问题
Freya
是
否
否
依赖旧版本 Dioxus,渲染和文本识别存在问题
fui
qmake 错误,无法构建
未提及
未提及
缺乏文档,构建失败
GemGui
技术上可用,但依赖问题多
未提及
未提及
依赖 Python,运行方式繁琐
GPUI
是
否
是
缺乏基本文本输入部件,文档和安装不完善
GTK 3
不再维护
未提及
未提及
已过时
GTK 4
是
否
是
窗口装饰和可访问性存在问题
Iced
是
否
否
受 Elm 启发,在可访问性和 IME 支持上有缺陷
imgui
是
否
否
与游戏引擎结合较好,但初始设置繁琐,支持多种渲染器导致选择困难
KAS
是
否
否
教程过时,状态管理设计不清晰
kittest
仅用于测试
未提及
未提及
仅支持 egui 测试
Leptos
仅用于 Web
未提及
未提及
Web 前端框架,原生 GUI 支持不足
lvgl
C 依赖问题
未提及
未提及
配置在 Windows 上有问题
Makepad
是
否
部分支持
缺乏文档,可访问性支持差
masonry
是
内容可识别但位置错误
是,但有临时乱码
API 使用不太方便
Maycoon
无文本输入部件
未提及
未提及
太新,功能不完整
Pax
无 Windows 支持
未提及
未提及
仅支持 macOS
qmetaobject
不支持 windows - msvc
未提及
未提及
与特定目标不兼容
relm
使用不再维护的 GTK 3
未提及
未提及
依赖过时库
Relm4
是
否
是
基于 GTK 4,继承其问题
Ribir
部分支持,但状态管理混乱
否
部分支持
状态管理机制有问题
Rinf
不使用 Rust 构建 GUI
未提及
未提及
不符合调研需求
rui
是
否
否
状态管理可能较繁琐
Slint
是
是
部分支持
有自己的 DSL,数据绑定功能巧妙,默认字体可能存在问题
Tauri
是
是
部分支持
前端与后端通信存在问题,缺乏类型安全
tinyfiledialogs
非通用 GUI 库
未提及
未提及
功能有限,无法完成任务
Tk
是
否
是
安装和使用复杂,依赖外部库
Vizia
是
结构可识别但内容不可识别
部分支持
文本字段聚焦时样式有问题
WebRender
太低级,不适用于 GUI 开发
未提及
未提及
无 GUI 组件,是低级别图形库
windows
不熟悉 Win32 API
未提及
未提及
缺乏 GUI 开发指导
WinSafe
是
是
是
手动布局不佳,存在窗口创建时序问题
Xilem
是
内容可识别但位置错误
是,但有临时乱码
缺乏版本管理
本次调研涵盖 43 种 Rust GUI 库,各库在功能、易用性、可访问性和 IME 支持等方面表现差异较大。
作者推荐了几个表现较好的库:喜欢 CSS 布局可选 Dioxus;青睐 DSL 驱动的用户可选择 Slint;想避免 DSL 和宏,只用常规 Rust 代码的可考虑 egui;愿意早期投资的可关注 Xilem。虽然没有绝对完美的选择,但相比 2021 年,如今有更多合理的选项可供开发者选择。
原文:https://www.boringcactus.com/2025/04/13/2025-survey-of-rust-gui-libraries.html