Skip to content

Latest commit

 

History

History
275 lines (194 loc) · 10.1 KB

File metadata and controls

275 lines (194 loc) · 10.1 KB

English | 简体中文

Fluent-Qt logo

Fluent-Qt

面向 Qt Widgets 的跨平台 Fluent 风格 C++ UI 组件库。

CI GitHub stars MIT License Platform Qt Widgets Qt C++17 PyPI

Windows 下使用 Mica 效果的 Fluent-Qt Gallery

实时体验 C++ Web Gallery · 项目官网 · 提问与交流

Fluent-Qt(FluentQt)是面向 Qt Widgets 的跨平台 Fluent UI 组件库,提供输入、导航、集合、数据表格、图表、弹窗和窗口等原生控件。它保留 Qt Widgets 熟悉的对象模型和 CMake 工作流,支持 Windows、macOS、Linux、WebAssembly、浅色/深色/高对比度主题、应用级完整/减弱/关闭动效策略,以及 C++ 和可选 PySide6 接口,可直接接入现有项目。

🤖 使用 Agent 构建

在 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

C++ 接入

集成方式 CMake
FetchContent 集成 FetchContent_MakeAvailable(fluentqt)
源码集成 add_subdirectory(Fluent-Qt)
安装包集成 find_package(FluentQt CONFIG REQUIRED)

FetchContent 集成

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

C++ 最小示例

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。

可选 Python 兼容

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

评估项目时可直接使用在线 WebAssembly Gallery。本地工具链、构建、浏览器冒烟测试和 Pages 部署统一见 WebAssembly 工作流

🖼 Gallery

Gallery 用于浏览、演示和验证 FluentQt 组件。

C++ Web Gallery

在线体验:项目官网 · 独立页面

C++ Gallery 安装包

GitHub Releases 下载当前 Windows、macOS 或 Linux Gallery 安装包。持续维护的构建与打包矩阵见打包工作流

本地运行 C++ Gallery

仓库预设需要 CMake 3.25+ 和 VCPKG_ROOT。本机 Qt kit 的配置方法见首次配置

先查看当前平台可用的构建配置:

cmake --list-presets

Apple 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。

本地打包 C++ Gallery

使用打包工作流中的平台 preset 和验证步骤。

Python 兼容 Gallery

Python Gallery 通过 PyPI 分发。

python -m pip install FluentQt-Gallery
python -m fluentqt_gallery

FluentQt-Gallery 会自动安装对应版本的 FluentQt

📚 文档

可以从文档导航开始,也可以按目标直接进入:

目标 入口
体验和查找控件 API Explorer · WebAssembly Gallery
构建应用 AI 辅助开发 · 环境检查与项目模板
参与 FluentQt 开发 开发文档树 · 架构约定 · Fluent 设计
打包或发布 打包工作流 · 发布治理 · 版本记录
提问或报告问题 社区入口 · 支持 · 安全报告
中文即时交流 QQ 群 1109997685

QQ群用于中文即时交流、作品展示与贡献协作;需要持续追踪的问题请继续使用 GitHub Discussions 或 Issues。

Fluent-Qt QQ 群入群二维码

提交改动前请阅读参与贡献社区行为准则

🔗 参考

来源 用途
Windows UI Kit (Community) Fluent / Windows 视觉参考
WinUI Gallery 组件行为和示例页面参考

许可证

Fluent-Qt 项目自身的源代码使用 MIT License 发布。项目中捆绑的资源以及发布包中的运行时依赖继续适用各自的上游许可;具体版本、来源、对应源码提供规则和许可证位置见第三方声明。产品名称、徽标及外部设计参考的相关说明见商标与外部引用声明