FluentQtWidgets 是一个面向 C++/Qt Widgets 的 Fluent Design 风格控件库,包含可复用控件、独立示例和完整的 Gallery 应用。
本项目是 Python 版 PyQt-Fluent-Widgets 的 C++/Qt Widgets 移植版本。Python 原版是本仓库的行为与视觉基准:控件状态、间距、QSS 常量、示例内容、资源路径、Gallery 页面结构和翻译均尽量对齐上游实现;只有 Qt/C++ 平台行为存在差异时才保留必要调整。
![]() |
![]() |
| 用本库控件搭建的界面:浅色与深色主题、主题色均可运行时切换 | |
![]() Gallery:按分类浏览全部控件 |
![]() 图表:原生绘制的实时多曲线 |
![]() 日期与时间:滚轮式选择器 |
![]() 菜单:圆角菜单与级联子菜单 |
- 200+ 控件与组件:各式按钮(主题色、下拉、分裂、切换、药丸、超链接)、复选框、单选框、开关、滑块、下拉框、输入框、数字框,日期与时间选择器,导航栏、Pivot、分段控件、面包屑与标签页,列表、表格和树视图,对话框、Flyout、TeachingTip、圆角菜单与命令栏,InfoBar、徽章、进度条与进度环,设置卡片,以及媒体播放栏与视频控件(需 Qt Multimedia)。
- 原生图表:
ChartWidget使用类 ECharts 的 JSON 配置绘制柱状、折线、面积、环形、散点、雷达、仪表盘与热力图;RealtimePlotWidget适合高密度实时数据流,另有AudioWaveformWidget波形控件。 - 主题:浅色、深色或跟随系统,主题色可自定义,均可在运行时切换。自定义控件可用
FluentStyleSheet::setCustomStyleSheet()为两个主题各提供一份样式。 - 窗口与材质:无边框的
FluentWindow、MSFluentWindow与SplitFluentWindow,Windows 11 上的 Mica 背景,亚克力材质的菜单、浮层、输入框与提示。 - 170+ Fluent 图标,自动适配浅色与深色主题。
- 多语言:内置简体中文与繁体中文翻译。
- 示例齐全:75 个可单独运行的示例,以及可检查更新的完整 Gallery 应用。
- 跨平台:Windows、macOS 与 Linux,三平台持续集成。
构建并安装后,在你的 CMake 项目中引用:
find_package(Qt6 REQUIRED COMPONENTS Widgets)
find_package(FluentQtWidgets CONFIG REQUIRED)
target_link_libraries(my_app PRIVATE Qt6::Widgets FluentQtWidgets::Widgets)#include <FluentQtWidgets/FluentQtWidgets.h>
#include <QApplication>
#include <QVBoxLayout>
using namespace FluentQt;
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
ThemeManager::instance()->setTheme(Theme::Auto); // 跟随系统的浅色 / 深色
QWidget window;
auto *layout = new QVBoxLayout(&window);
layout->addWidget(new TitleLabel(QStringLiteral("Hello Fluent")));
layout->addWidget(new SwitchButton);
auto *button = new PrimaryPushButton(QStringLiteral("切换主题"));
QObject::connect(button, &QPushButton::clicked, [] {
auto *theme = ThemeManager::instance();
theme->setTheme(theme->effectiveTheme() == Theme::Dark ? Theme::Light : Theme::Dark);
});
layout->addWidget(button);
window.show();
return app.exec();
}想先看看效果,可以在 Releases 下载对应平台的 Gallery。
- Fluent 串口助手 - 基于 Qt 6 和 FluentQtWidgets 构建的串口调试工具,覆盖串口连接、RX/TX 终端显示、实时曲线、协议解析、记录导出、主题切换和三平台发布打包。
- FluentHMI Studio - 面向硬件工程师的 C++/Qt 6 可视化上位机设计器,支持拖拽控件、绑定串口/TCP/MQTT(Modbus RTU/TCP)数据,并可在一秒内导出无需编译器的独立应用。
- CMake 3.21+ 与支持 C++17 的编译器
- Qt 6.12(Core、Gui、Widgets、Svg、Network)
- 可选:Qt Multimedia + MultimediaWidgets,用于媒体控件(单独安装的 Qt Multimedia 还需
QT_ADDITIONAL_PACKAGES_PREFIX_PATH,见快速开始);Qt WebEngineWidgets,仅独立 WebEngine 示例需要
cmake -S . -B build -DFQW_BUILD_TESTS=ON
cmake --build build --parallel
ctest --test-dir build --output-on-failure
cmake --install build --prefix <install-prefix>示例默认参与构建(FQW_BUILD_EXAMPLES)。CMake preset、Windows 下 Qt kit(MinGW 与 MSVC)的选择、运行 Gallery 和 75 个示例,以及在自己的项目中引用本库,见快速开始。
- 快速开始:构建、运行 Gallery 与示例、引用本库
- 控件:按类别介绍控件,附示例代码
- 架构设计:库的分层、主题与样式表
- 移植指南:移植如何对齐 Python 原版
- 发布与 OTA:版本号、发布标签与 Gallery 更新检查
- 贡献指南 · 变更记录
本项目以 GPL-3.0-or-later 发布。上游来源与资源授权见 Third Party Notices。
- 本项目的文档和代码由 AI 生成,可能存在错误或疏漏,请在使用前自行核对和测试。
- 本项目为社区开源项目,与 Microsoft 以及 PyQt-Fluent-Widgets 原作者无任何隶属、合作或背书关系。Fluent Design、Windows 等名称和商标归其各自所有者所有。
- 本项目按“原样”提供,不附带任何明示或暗示的担保,包括但不限于适销性、特定用途适用性和不侵权担保。详见 GPL-3.0 第 15、16 条。
- 因使用、修改或分发本项目而产生的任何直接或间接损失,作者和贡献者均不承担责任;请在生产环境使用前自行充分测试。
- 使用者应自行确保其使用方式符合 GPL-3.0-or-later、第三方资源授权以及所在地的法律法规。







