# 一些GUI框架的评估和讨论

**URL:** <https://meta.appinn.net/t/topic/91341>\
**Category:** 讨论分享\
**Tags:** windows\
**Created:** [2026 年9 月 6 日 11:37 UTC](https://meta.appinn.net/t/topic/91341 "2026-09-06T11:37:30Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

作者： ![L11](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/l11/32/5516_2.png) [@L11](https://meta.appinn.net/u/L11)\
发布日期： [2026 年9 月 6 日 11:37 UTC](https://meta.appinn.net/t/topic/91341/1 "2026-09-06T11:37:30Z")

</div>

参考 [Philippe Groarke 的文章](https://philippegroarke.com/posts/2018/c++_ui_solutions/)，仅针对个人开发者提供一些GUI选择建议。

> [!Error]警告
> 
> 1. 以下均为个人主观评价
> 2. 以Windows平台GUI框架为主，也列出包含Windows在内的跨平台方案
> 3. 仅列出我熟悉或者了解的GUI框架，如有遗漏，希望大家补充
> 4. 本来想发布成wiki贴，不过不知道怎么做，就这样吧

* * *

### Qt

Qt 拥有您所需的一切，可助您快速高效地设计、开发、测试、部署和维护任何项目的软件。专注于打造最佳用户体验，而不是重复编写已有的代码。

- **主要开发语言** ：C++
- **平台** ：跨平台
- **License** ：Commercial / GPL3 & LGPL3
- **风格** ：自绘 / 现代
- **优点** ：
  1. 久经沙场
  2. 强大的 IDE 和 UI Builder
  3. 很多 C++ 程序员推崇它
  4. 它确实有你所需的一切

- **缺点** ：
  1. 巨大而沉重的框架
  2. 使用旧范式
  3. 全家桶
  4. 慢
  5. 我不喜欢

- **简评** ：  
如果你不介意发布时带着一堆动态链接库的话，Qt确实是万能的。

* * *

### MFC (Microsoft Foundation Class)

MFC 是微软早期推出的 C++ 封装库，深深植根于 Win32 API 架构中，是许多老旧 Windows 桌面软件的历史遗留选择。

- **主要开发语言** ：C++
- **平台** ：仅 Windows
- **License** ：专有（随 Visual Studio 提供）
- **风格** ：原生
- **优点** ：
  1. 久经沙场
  2. Visual Studio集成
  3. 资料丰富

- **缺点** ：
  1. 宏
  2. 过时的 C++ 编程习惯

- **简评** ：  
今昔是何年？

* * *

### WTL (Windows Template Library)

WTL 是基于 ATL 的轻量级 C++ 模版库，旨在为 Win32 界面开发提供比 MFC 更高效、更轻量级的封装。

- **主要开发语言** ：C++
- **平台** ：仅 Windows
- **License** ：MS-PL (Microsoft Public License)
- **风格** ：原生
- **优点** ：
  1. Header only
  2. 基于 C++ 模板，运行效率和打包体积约等于win32api

- **缺点** ：
  1. C++ 模板
  2. 上手难度高

- **简评** ：  
我宁愿选择win32api。

* * *

### win32++

win32++ 是一个现代化的、仅包含头文件的 C++ 库，旨在对 Win32 API 进行直接且清晰的面向对象封装，是 MFC 的轻量级替代品。

- **主要开发语言** ：C++
- **Platform** ：仅 Windows
- **License** ：MIT
- **风格** ：原生
- **优点** ：
  1. Header only
  2. 运行效率和打包体积约等于win32api

- **缺点** ：
  1. 上手难度高

- **简评** ：  
一个很不错的MFC/win32api/WTL替代品。

* * *

### wxWidgets

wxWidgets 是一个让 C++ 开发者能够为多个平台创建原生界面外观的 GUI 库。

- **主要开发语言** ：C++
- **平台** ：跨平台
- **License** ：wxWindows Library Licence (LGPL 衍生版本，允许商业闭源静态链接)
- **风格** ：原生
- **优点** ：
  1. 久经沙场
  2. 许可证极其友好
  3. 拥有 wxFormBuilder 等第三方可视化设计工具
  4. 在各平台使用原生外观

- **缺点** ：
  1. 复杂的API

- **简评** ：  
很好很强大。

* * *

### Sciter

Sciter 是一个轻量级、高性能的嵌入式 HTML/CSS/JS (TIScript/JSX) UI 引擎，专为桌面应用界面设计。

- **主要开发语言** ：C++ (引擎提供 C/C++ API)
- **平台** ：跨平台
- **License** ：Commercial / 免费版有功能限制
- **风格** ：现代
- **优点** ：
  1. 久经沙场
  2. HTML、CSS、JS
  3. 内存占用和体积远小于 Electron和webview2等方案
  4. 易于使用，并提供许多高级UI功能
  5. DOM检查器

- **缺点** ：
  1. 不开源，但二进制文件可免费获取
  2. 文档不够完善
  3. 工具生态系统陈旧停滞

- **简评** ：  
相比webview方案强过不少。

* * *

### Dear ImGui

Dear ImGui 是一个即时模式的 C++ 实时图形界面库，专为游戏引擎、工具和调试面板设计。

- **主要开发语言** ：C++
- **平台** ：跨平台
- **License** ：MIT
- **风格** ：自绘
- **优点** ：
  1. 久经沙场
  2. 无外部依赖，代码极其易读且容易扩展

- **缺点** ：
  1. 没有可视化UI设计器

- **简评** ：  
即时模式的最佳选择。

* * *

### GTK

GTK 是 Linux/GNOME 桌面环境的核心 UI 框架。

- **主要开发语言** ：C
- **平台** ：跨平台
- **License** ：LGPL
- **风格** ：自绘
- **优点** ：
  1. 久经沙场
  2. Linux平台下的事实标准

- **缺点** ：
  1. 在 Windows 平台上的视觉体验较差
  2. API版本间不兼容变动较多
  3. 使用C模拟面向对象

- **简评** ：  
你确定要用C来写GUI？

* * *

### raygui

raygui 是专门为 raylib 游戏编程库设计的简单易用的立即模式（Immediate Mode）GUI 库。

- **主要开发语言** ：C (易于在 C++ 中使用)
- **平台** ：跨平台
- **License** ：zlib/libpng
- **风格** ：自绘
- **优点** ：
  1. 简单
  2. 漂亮
  3. 很多小部件
  4. 易于上手

- **缺点** ：
  1. “raygui 旨在用于工具开发”

- **简评** ：  
即时模式的又一选择。

* * *

### FLTK (Fast Light Toolkit)

FLTK 是一个极其轻量级、跨平台的 C++ GUI 工具包，专注于小巧与快速。

- **主要开发语言** ：C++
- **平台** ：跨平台
- **License** ：LGPL (带有静态链接例外条款)
- **风格** ：经典
- **优点** ：
  1. 轻量
  2. UI Builder

- **缺点** ：
  1. 丑

- **简评** ：  
丑

* * *

### IUP

IUP 是一个跨平台的 C 语言 GUI 工具包，通过抽象底层操作系统 API 来提供原生界面。

- **主要开发语言** ：C (可用于 C++)
- **平台** ：跨平台
- **License** ：MIT
- **风格** ：原生
- **优点** ：
  1. 原生外观
  2. 轻量
  3. 和Lua工作得很好

- **缺点** ：
  1. SourceForge！？
  2. 折磨程序员

- **简评** ：  
你确定要用C来写GUI？

* * *

### WinForms (Windows Forms)

WinForms 是微软基于 Win32 API 封装的 C# 桌面 UI 框架，是 .NET 早期最流行的桌面开发工具。

- **主要开发语言** ：C#
- **平台** ：仅 Windows
- **License** ：MIT (.NET Core 开源版本)
- **风格** ：原生
- **优点** ：
  1. C# 下的VB
  2. 拥有 Visual Studio 中最成熟、最流畅的 UI 拖拽设计器

- **缺点** ：
  1. 不支持现代化布局与 DPI 缩放适配能力较差
  2. 架构陈旧，不适应现代化 MVVM 设计模式

- **简评** ：  
Old but gold, C#下的RAD最佳选择

* * *

### WPF (Windows Presentation Foundation)

WPF 是微软推出的基于矢量渲染与 XAML 的现代 Windows 桌面应用程序框架。

- **主要开发语言** ：C#
- **平台** ：仅 Windows
- **License** ：MIT (.NET Core 开源版本)
- **风格** ：现代
- **优点** ：
  1. MVVM
  2. 基于 XAML 与 DirectX 渲染，支持高度灵活的样式、模板和动画自定义
  3. 第三方现代 UI 控件库

- **缺点** ：
  1. XAML

- **简评** ：  
介于WinForms和Avalonia之间，不上不下

* * *

### Avalonia

Avalonia 是一个开源的、跨平台的 .NET UI 框架，支持 XAML 和现代化的 C# UI 开发，通常被视为跨平台版的 WPF。

- **主要开发语言** ：C#
- **平台** ：跨平台
- **License** ：MIT
- **风格** ：现代
- **优点** ：
  1. 跨平台
  2. 从WPF迁移成本低

- **缺点** ：
  1. 生态比不上WPF

- **简评** ：  
升级版WPF

* * *

### WinUI 3

WinUI 3 是微软官方最新的 Native Windows UI 库，代表着 Windows 桌面开发的未来方向。

- **主要开发语言** ：C# / C++ (WinRT)
- **平台** ：仅 Windows
- **License** ：MIT / 专有
- **风格** ：现代
- **优点** ：
  1. Fluent Design
  2. “WinUI 3 是用于构建新的Windows 桌面应用程序的推荐原生UI 框架。”

- **缺点** ：
  1. 半成品
  2. 不兼容旧版本 Windows 系统

- **简评** ：  
未来可期！（现在就别碰了）

* * *

### CEF/Electron

CEF 是一个简单的框架，用于将基于Chromium的浏览器嵌入到其他应用程序中。

- **主要开发语言** ：html/Js
- **平台** ：跨平台
- **License** ：MIT
- **风格** ：现代
- **缺点** ：
  1. 巨大的
  2. 你真的想在UI中嵌入一个Chromium内核吗？

- **简评** ：  
别碰！

* * *

### WebView2

WebView2 控件允许在原生 Windows 应用程序中嵌入 Web 技术），使用 Microsoft Edge 作为底层渲染引擎。

- **主要开发语言** ：C++ / C#
- **平台** ：Windows
- **License** ：专有
- **风格** ：现代
- **优点** ：
  1. HTML、CSS、JS
  2. 打包体积小

- **缺点** ：
  1. 运行时内存仍较大
  2. 依赖系统的WebView2运行时

- **简评** ：  
比CEF/Electron方案也就打包体积小了点

* * *

### Duilib

Duilib 是 Windows 平台下久负盛名的开源 C++ 界面库，使用 XML 描述界面布局，主要通过 DirectUI 思想和 GDI/GDI+ 绘图实现自定义换肤。

- **主要开发语言** ：C++
- **平台** ：仅 Windows
- **License** ：MIT / BSD
- **风格** ：自绘
- **优点** ：
  1. 轻量高效
  2. 支持换肤

- **缺点** ：
  1. 过时的
  2. XML+贴图

- **简评** ：  
你打算分一半coding的时间在Photoshop上吗？

* * *

### WebUI

WebUI 是一个极其轻量级的 C/C++ 库，允许开发者使用任何网页前端技术作为客户端界面，同时后台与原生的 C/C++ 等代码进行高效交互。

- **主要开发语言** ：C / C++ /多语言绑定
- **平台** ：跨平台
- **License** ：MIT
- **风格** ：现代
- **优点** ：
  1. 轻量
  2. 使用简单

- **缺点** ：
  1. 用户体验和传统应用程序差别较大

- **简评** ：  
似乎有点非主流，不过管他呢，好用就行

* * *

### Lazarus

Lazarus 是基于 Object Pascal 语言的经典 RAD（快速应用开发）GUI 解决方案。

- **主要开发语言** ：Object Pascal
- **平台** ：跨平台
- **License** ：GPL & LGPL (Lazarus)
- **风格** ：原生
- **优点** ：
  1. RAD

- **缺点** ：
  1. Pascal

- **简评** ：  
不是C#害了你，是这个乱世害了你鸭！

* * *

### Flutter

Flutter 是由 Google 开发的开源 UI 工具包，允许使用单一代码库为移动设备、Web 和桌面端（Windows, macOS, Linux）构建跨平台应用。

- **主要开发语言** ：Dart
- **平台** ：跨平台
- **License** ：BSD
- **风格** ：自绘 / 现代
- **优点** ：
  1. 真·跨平台，各平台视觉和动画效果高度一致
  2. 热重载

- **缺点** ：
  1. Dart
  2. });});},),);}

- **简评** ：  
你需要一个带彩虹括号功能的IDE

---

<div class="post-metadata">

作者： ![ntoskrnl](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/ntoskrnl/32/79026_2.png) [@ntoskrnl](https://meta.appinn.net/u/ntoskrnl)\
发布日期： [2026 年9 月 6 日 11:56 UTC](https://meta.appinn.net/t/topic/91341/2 "2026-09-06T11:56:09Z")

</div>

不错啊  
补充一下WPF、WinForm等等也是可以用VB.Net开发的，不过大概是没多少人这么用了

* * *

Win32 API \<---------------------------------------\> WinUI 3  
Windows的GUI框架还真的是不讨喜啊，从左到右都没有爽的  
这难道是C/C++的锅吗 哈哈

macOS上我已经梭哈SwiftUI了，很爽，够现代

---

<div class="post-metadata">

作者： ![Dalieba](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dalieba/32/3804_2.png) [@Dalieba](https://meta.appinn.net/u/Dalieba)\
发布日期： [2026 年9 月 7 日 03:26 UTC](https://meta.appinn.net/t/topic/91341/3 "2026-09-07T03:26:32Z")

</div>

Qt API 的版本间变动也不小了

---

<div class="post-metadata">

作者： ![yyzTools](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/yyztools/32/76347_2.png) [@yyzTools](https://meta.appinn.net/u/yyzTools)\
发布日期： [2026 年9 月 7 日 03:52 UTC](https://meta.appinn.net/t/topic/91341/4 "2026-09-07T03:52:34Z")

</div>

Windows 不得不提一下webView2，等同CEF和Election，优势是可以减少安装包的尺寸

---

<div class="post-metadata">

作者： ![David\_Aldrich](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/d/b2d939/32.png) [@David\_Aldrich](https://meta.appinn.net/u/David_Aldrich)\
发布日期： [2026 年9 月 7 日 08:35 UTC](https://meta.appinn.net/t/topic/91341/5 "2026-09-07T08:35:11Z")

</div>

之前有些国产软件的installer是用 [GitHub - duilib/duilib · GitHub](https://github.com/duilib/duilib) 写的。当然，这个GUI框架只适用于Windows操作系统。

---

<div class="post-metadata">

作者： ![HumanBait](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/humanbait/32/74384_2.png) [@HumanBait](https://meta.appinn.net/u/HumanBait)\
发布日期： [2026 年9 月 7 日 08:46 UTC](https://meta.appinn.net/t/topic/91341/6 "2026-09-07T08:46:37Z")

</div>

要不老古董，要不半成品

---

<div class="post-metadata">

作者： ![laizn](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/laizn/32/75658_2.png) [@laizn](https://meta.appinn.net/u/laizn)\
发布日期： [2026 年9 月 7 日 08:52 UTC](https://meta.appinn.net/t/topic/91341/7 "2026-09-07T08:52:58Z")

</div>

既然有AI了，何不加入rust神教，使用Tauri一次性开发跨5平台的应用呢？

---

<div class="post-metadata">

作者： ![TecNico](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/tecnico/32/78882_2.png) [@TecNico](https://meta.appinn.net/u/TecNico)\
发布日期： [2026 年9 月 7 日 09:23 UTC](https://meta.appinn.net/t/topic/91341/8 "2026-09-07T09:23:43Z")

</div>

虽然编译出来不大，但是编译一次会发现项目文件夹会膨胀到十几G

---

<div class="post-metadata">

作者： ![laizn](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/laizn/32/75658_2.png) [@laizn](https://meta.appinn.net/u/laizn)\
发布日期： [2026 年9 月 7 日 09:38 UTC](https://meta.appinn.net/t/topic/91341/9 "2026-09-07T09:38:25Z")

</div>

因为空间换时间了……好在cargo clean可以直接删

---

<div class="post-metadata">

作者： ![22P](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/2/3d9bf3/32.png) [@22P](https://meta.appinn.net/u/22P)\
发布日期： [2026 年9 月 7 日 10:20 UTC](https://meta.appinn.net/t/topic/91341/10 "2026-09-07T10:20:20Z")

</div>

tauri谨慎入坑，各个api都不完善，而且由于webview的缘故，低端设备上系统资源占用很大，我还写过插件来着，最后demo在我那台surface go3上卡得飞起，直接放弃了

---

<div class="post-metadata">

作者： ![SmallPackage](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/smallpackage/32/57958_2.png) [@SmallPackage](https://meta.appinn.net/u/SmallPackage)\
发布日期： [2026 年9 月 7 日 10:34 UTC](https://meta.appinn.net/t/topic/91341/11 "2026-09-07T10:34:18Z")

</div>

这个本质还是web技术栈的。  
不如让ai手搓gpui之类的框架了

---

<div class="post-metadata">

作者： ![laizn](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/laizn/32/75658_2.png) [@laizn](https://meta.appinn.net/u/laizn)\
发布日期： [2026 年9 月 7 日 10:37 UTC](https://meta.appinn.net/t/topic/91341/12 "2026-09-07T10:37:11Z")

</div>

啊有这么夸张吗，难道不是你的surface go3能运行Edge就能运行tauri？:thinking:
