路线与选型
这页用于收纳原先零散的 GUI 总结、轻量级框架记录和短笔记。
先看结论
- 如果目标是桌面应用,优先看 跨平台GUI - Qt。
- 如果目标是浏览器界面或网站前端,优先看 Web GUI - React。
- 如果目标是需要自己接管渲染链路的跨平台程序,优先看 跨平台基础设施 - SDL。
- 如果目标是资源受限设备上的图形界面,优先看 嵌入式GUI - LVGL。
不同路线的适用边界
Qt
- 优点是工程体系成熟,控件、Designer、QML、跨平台支持都比较完整。
- 缺点是体系较大,学到后面很容易从 GUI 一路扩展到网络、数据库、OpenGL、音视频等整套应用开发。
- 适合业务桌面软件、上位机、需要完整工程能力的客户端应用。
React
- 更适合 Web 前端和文档站点类项目。
- 生态和脚手架都很成熟,但也更依赖前端工程体系。
- 适合需要浏览器分发、多人协作和组件化页面开发的场景。
SDL
- 更像底层基础设施,不直接提供完整业务控件体系。
- 适合自己掌控窗口、输入、渲染循环,或给其他媒体/图形库打底。
- 常见于播放器、图形实验、跨平台轻量程序。
LVGL
- 适合 MCU、精简 Linux、嵌入式设备等资源受限环境。
- 优点是轻量、可移植,适合在 PC 侧先做模拟调试,再迁到目标板。
- 更适合确定硬件边界后的专用界面,不适合作为通用桌面框架。
轻量级和特殊形态 GUI
FTXUI
- 终端 UI 库,适合命令行程序做交互界面。
- 关键词是
Screen、Dom、Component。 - 更适合工具软件和开发辅助界面,不适合复杂图形应用。
RmlUi
- 使用 HTML/CSS 风格描述 UI,对有 Web 背景的人更友好。
- 适合游戏或引擎内嵌面板,不依赖浏览器。
Dear ImGui
- 即时模式 GUI,优势是集成快、适合调试工具和编辑器。
- 更偏开发者工具,不适合做强视觉一致性的最终用户界面。
个人经验提炼
- GUI 开发本身只是入口,后面很快会牵连到构建、资源管理、网络、数据库和调试。
- 真正有复用价值的内容,不是“会不会画按钮”,而是框架边界、调试路径和工程组织方式。
- 同一类问题优先沉淀到已有主题页,不再单独新增很多两三屏就说完的短文。