English | 简体中文
面向 Qt Widgets 的跨平台 Fluent 风格 C++ UI 组件库。
实时体验 C++ Web Gallery · 项目官网 · 提问与交流
Fluent-Qt(FluentQt)是面向 Qt Widgets 的跨平台 Fluent UI 组件库,提供输入、导航、集合、数据表格、图表、弹窗和窗口等原生控件。它保留 Qt Widgets 熟悉的对象模型和 CMake 工作流,支持 Windows、macOS、Linux、WebAssembly、浅色/深色/高对比度主题、应用级完整/减弱/关闭动效策略,以及 C++ 和可选 PySide6 接口,可直接接入现有项目。
在 Codex、Claude Code 或 Cursor 中使用 build-fluentqt-gui,创建桌面应用、给现有工程添加 GUI 或修复界面。查看效果 · 安装与用法
调整 Gallery 示例时,可以先在 Live Scene 里边改边看,再用编译后的 C++ 示例确认最终效果。查看用法
| 范围 | 依赖 |
|---|---|
| FluentQt C++ 组件库 | C++17、CMake 3.16+、Qt Widgets 5.15+ 或 6.2+ |
| C++ Gallery | FluentQt、Qt Network、spdlog/fmt |
| C++ WebAssembly | Qt 6.9.3 wasm_singlethread、Emscripten 3.1.70 |
| 测试 | FluentQt、Qt Test/Network、GTest、spdlog/fmt |
| 可选 PySide6 绑定 | Qt/PySide6/Shiboken6 6.2.4+;源码构建支持 Python 3.10+ |
选择一种方式将 FluentQt 链接到 CMake 项目。新项目推荐使用 FetchContent。
| 集成方式 | CMake |
|---|---|
FetchContent 集成 |
FetchContent_MakeAvailable(fluentqt) |
| 源码集成 | add_subdirectory(Fluent-Qt) |
| 安装包集成 | find_package(FluentQt CONFIG REQUIRED) |
cmake_minimum_required(VERSION 3.16)
project(my_app LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(FetchContent)
FetchContent_Declare(
fluentqt
GIT_REPOSITORY https://github.com/calvinhxx/Fluent-Qt.git
GIT_TAG v1.8.5
GIT_SHALLOW TRUE
)
FetchContent_MakeAvailable(fluentqt)
add_executable(my_app main.cpp)
target_link_libraries(my_app PRIVATE FluentQt::FluentQt)定义好应用目标后,加入 Fluent-Qt 源码目录并链接导出目标:
add_subdirectory(Fluent-Qt)
target_link_libraries(my_app PRIVATE FluentQt::FluentQt)find_package(FluentQt CONFIG REQUIRED)
target_link_libraries(my_app PRIVATE FluentQt::FluentQt)如果 FluentQt 不在系统搜索路径中,配置时传入 -DCMAKE_PREFIX_PATH=/path/to/fluentqt。
main.cpp:
#include <FluentQt/FluentQt.h>
#include <QApplication>
#include <QVBoxLayout>
#include <QWidget>
int main(int argc, char* argv[])
{
fluent::prepareHighDpiApplication();
QApplication app(argc, argv);
fluent::initializeResources();
app.setFont(Typography::fontStyle(Typography::FontRole::Body).toQFont());
fluent::windowing::Window window;
window.setWindowTitle(QStringLiteral("FluentQt Hello World"));
window.resize(480, 320);
auto* content = new QWidget;
auto* layout = new QVBoxLayout(content);
layout->setContentsMargins(32, 32, 32, 32);
auto* button = new fluent::basicinput::Button(
QStringLiteral("Hello from FluentQt"), content);
button->setFluentStyle(fluent::basicinput::Button::Accent);
layout->addStretch();
layout->addWidget(button, 0, Qt::AlignCenter);
layout->addStretch();
window.setContentWidget(content);
window.show();
return app.exec();
}完整工程见 examples/hello_world,IDE 中可直接运行 fluentqt_hello_world target。
PySide6 兼容层通过 Shiboken6 将 Fluent-Qt 的原生 C++ 控件提供给 Python 使用。
python -m pip install FluentQt安装、示例、兼容信息和源码构建见 Python 指南。
cmake -S . -B build/fluentqt \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=/path/to/Qt
python3 tools/dev/fluent_qt_build.py build/fluentqt --config Release --target FluentQt
cmake --install build/fluentqt --config Release \
--component Development --prefix /path/to/install构建脚本根据可用 CPU 和内存选择并行任务数,配置方法见构建工作流。
生成用于离线或源码集成的精简组件库源码包:
python3 tools/dev/fluent_qt_build.py build/fluentqt --target fluent_qt_source_package评估项目时可直接使用在线 WebAssembly Gallery。本地工具链、构建、浏览器冒烟测试和 Pages 部署统一见 WebAssembly 工作流。
Gallery 用于浏览、演示和验证 FluentQt 组件。
从 GitHub Releases 下载当前 Windows、macOS 或 Linux Gallery 安装包。持续维护的构建与打包矩阵见打包工作流。
仓库预设需要 CMake 3.25+ 和 VCPKG_ROOT。本机 Qt kit 的配置方法见首次配置。
先查看当前平台可用的构建配置:
cmake --list-presetsApple Silicon Mac 使用 vcpkg-osx:
cmake --preset vcpkg-osx
python3 tools/dev/fluent_qt_build.py \
--preset vcpkg-osx \
--target fluent_qt_gallery其他平台使用对应的 preset:
| 平台 | preset |
|---|---|
| Apple Silicon Mac | vcpkg-osx |
| Intel Mac 或 Rosetta | vcpkg-osx-x64 |
| Linux x64 | vcpkg-linux |
| Linux ARM64 | vcpkg-linux-arm64 |
| Windows x64 | vcpkg-windows |
| Windows ARM64 | vcpkg-windows-arm64 |
打包时使用对应的 -release preset。
使用打包工作流中的平台 preset 和验证步骤。
Python Gallery 通过 PyPI 分发。
python -m pip install FluentQt-Gallery
python -m fluentqt_galleryFluentQt-Gallery 会自动安装对应版本的 FluentQt。
可以从文档导航开始,也可以按目标直接进入:
| 目标 | 入口 |
|---|---|
| 体验和查找控件 | API Explorer · WebAssembly Gallery |
| 构建应用 | AI 辅助开发 · 环境检查与项目模板 |
| 参与 FluentQt 开发 | 开发文档树 · 架构约定 · Fluent 设计 |
| 打包或发布 | 打包工作流 · 发布治理 · 版本记录 |
| 提问或报告问题 | 社区入口 · 支持 · 安全报告 |
| 中文即时交流 | QQ 群 1109997685 |
QQ群用于中文即时交流、作品展示与贡献协作;需要持续追踪的问题请继续使用 GitHub Discussions 或 Issues。
| 来源 | 用途 |
|---|---|
| Windows UI Kit (Community) | Fluent / Windows 视觉参考 |
| WinUI Gallery | 组件行为和示例页面参考 |
Fluent-Qt 项目自身的源代码使用 MIT License 发布。项目中捆绑的资源以及发布包中的运行时依赖继续适用各自的上游许可;具体版本、来源、对应源码提供规则和许可证位置见第三方声明。产品名称、徽标及外部设计参考的相关说明见商标与外部引用声明。