GUI 选型对比
一、主流 GUI 框架
| 框架 | 内存 | 包大小 | 性能 | 嵌入式友好 | 风格 |
|---|---|---|---|---|---|
| LVGL | 极小 | < 1MB | 高 | ★★★★★ | 现代 |
| Qt5/6 | 中 | 5-30MB | 中高 | ★★★★ | 现代 |
| GTK | 大 | 20MB+ | 中 | ★ | 桌面 |
| SDL2 | 中 | 3MB | 高 | ★★★ | 游戏 |
| MiniGUI | 小 | < 2MB | 中 | ★★★ | 老牌国产 |
| EmWin / uC-GUI | 小 | < 1MB | 中 | ★★★★ | 商业 |
| TouchGFX | 小 | < 2MB | 高 | ★★★★ | STM32 |
| ugfx | 小 | < 1MB | 中 | ★★★ | 通用 |
二、选择因素
1. 资源限制
- RAM < 32MB → LVGL / MiniGUI
- RAM 32-128MB → Qt / LVGL + GPU
- RAM > 128MB → Qt / GTK / Web(HTML5)
2. 显示尺寸
- < 1.5":无 GUI
- 1.5"-5":LVGL / TouchGFX
- 5"-10":Qt / LVGL
-
10":Qt / GTK
3. 复杂程度
- 简单界面:LVGL
- 中等复杂:Qt / LVGL
- 复杂动画:Qt Quick / Web
4. 团队熟悉
- C 团队:LVGL / MiniGUI
- C++ 团队:Qt
- Web 团队:Web(HTML5)
- 桌面应用团队:Qt / GTK
5. 商业 vs 开源
- 商业:TouchGFX(STM32)、emWin(SEGGER)
- 开源:LVGL、Qt、GTK
三、推荐组合
1. 极低成本 MCU 板(RAM < 1MB)
- 无 GUI 或串口屏
- 段式 LCD
2. 中低端嵌入式(RAM 32-128MB)
- LVGL + Framebuffer
- 或 Qt5 with linuxfb
3. 中高端嵌入式(RAM 128MB+)
- Qt6 with eglfs
- 有 GPU 时效果更好
4. 高端嵌入式(RAM 512MB+)
- Qt6 / Web 前端(Chromium、Qt WebEngine)
- Android-based 系统(瑞芯微 RK3568 / RK3588)
四、HTML5 / Web 方案
- CEF(Chromium Embedded Framework)
- WebKitGTK
- Servo / Firefox
- 轻量 WebView:libcef(chromium 嵌入式)
适用场景:
- 复杂 UI 复用 Web 资源
- 快速迭代
- 远程 HMI
五、设计建议
- 优先考虑分辨率自适应(不同屏)
- 主题化(白天/夜间)
- 字体大小可调
- 触摸区 ≥ 5mm × 5mm
- 响应时间 < 100ms
六、调试工具
- Qt Creator:Qt 调试
- SquareLine Studio:LVGL 拖拽
- EEZ Studio:LVGL 拖拽
- LVGL Simulator(SDL2)
- GTK Inspector