English | 简体中文
A cross-platform Fluent-style C++ UI component library for Qt Widgets.
Try the live C++ Web Gallery · Project website · Questions & community
Fluent-Qt (FluentQt) is a cross-platform Fluent UI component library for Qt Widgets. It provides native controls for input, navigation, collections, data grids, overlays, and windows while preserving Qt's object model and CMake workflow. It supports Windows, macOS, Linux, WebAssembly, Light/Dark/High Contrast themes, an application-wide Full/Reduced/Disabled motion policy, C++, and optional PySide6 bindings, and can be added directly to existing projects.
Use build-fluentqt-gui in Codex, Claude Code, or Cursor to build a desktop app, add a GUI to a project, or fix an interface. Example · Install and use
When tuning a Gallery sample, use Live Scene to see each saved change, then check the result in the compiled C++ sample. How it works
| Scope | Dependencies |
|---|---|
| FluentQt C++ library | C++17, CMake 3.16+, Qt Widgets 5.15+ or 6.2+ |
| C++ Gallery | FluentQt, Qt Network, spdlog/fmt |
| C++ WebAssembly | Qt 6.9.3 wasm_singlethread, Emscripten 3.1.70 |
| Tests | FluentQt, Qt Test/Network, GTest, spdlog/fmt |
| Optional PySide6 bindings | Qt/PySide6/Shiboken6 6.2.4+; Python 3.10+ for source builds |
Link FluentQt to a CMake project using one of the following methods. FetchContent is recommended for new projects.
| Integration | CMake |
|---|---|
FetchContent integration |
FetchContent_MakeAvailable(fluentqt) |
| Source integration | add_subdirectory(Fluent-Qt) |
| Installed package integration | 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.4
GIT_SHALLOW TRUE
)
FetchContent_MakeAvailable(fluentqt)
add_executable(my_app main.cpp)
target_link_libraries(my_app PRIVATE FluentQt::FluentQt)After defining your application target, add the Fluent-Qt source directory and link the exported target:
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)If FluentQt is outside the system search path, configure with -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();
}See examples/hello_world for the complete project, or run the fluentqt_hello_world target directly from an IDE.
The PySide6 compatibility layer exposes Fluent-Qt's native C++ widgets to Python through Shiboken6.
python -m pip install FluentQtSee the Python guide for installation, examples, compatibility, and source builds.
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/installThe build script selects parallelism from available CPU and memory. See the build workflow for configuration.
Create the reduced library source package for offline or source integration:
python3 tools/dev/fluent_qt_build.py build/fluentqt --target fluent_qt_source_packageUse the live WebAssembly Gallery for evaluation. Local toolchain setup, builds, browser smoke tests, and Pages deployment are documented in the WebAssembly workflow.
Gallery is used to browse, demonstrate, and validate FluentQt components.
Online: project website · standalone page.
Download the current Windows, macOS, or Linux Gallery package from GitHub Releases. The maintained build and package matrix lives in the packaging workflow.
Repository presets require CMake 3.25+ and VCPKG_ROOT. Configure your Qt kit
using the first-use setup.
List the presets available on the current host:
cmake --list-presetsOn Apple Silicon, use vcpkg-osx:
cmake --preset vcpkg-osx
python3 tools/dev/fluent_qt_build.py \
--preset vcpkg-osx \
--target fluent_qt_galleryUse the matching preset on other platforms:
| Platform | Preset |
|---|---|
| Apple Silicon Mac | vcpkg-osx |
| Intel Mac or Rosetta | vcpkg-osx-x64 |
| Linux x64 | vcpkg-linux |
| Linux ARM64 | vcpkg-linux-arm64 |
| Windows x64 | vcpkg-windows |
| Windows ARM64 | vcpkg-windows-arm64 |
Use the matching -release preset when packaging.
Use the platform preset and verification steps in the Packaging Workflow.
The Python Gallery is available from PyPI.
python -m pip install FluentQt-Gallery
python -m fluentqt_galleryFluentQt-Gallery installs the matching FluentQt version automatically.
Start with the documentation map, or choose a path:
| Goal | Entry point |
|---|---|
| Evaluate controls | API Explorer · WebAssembly Gallery |
| Build an application | AI-assisted development · Onboarding tools |
| Contribute to FluentQt | Development tree · Architecture · Fluent design |
| Package or release | Packaging · Release governance · Release notes |
| Get help or report a problem | Community · Support · Security |
See Contributing and the Code of Conduct before opening a change.
| Entry | Purpose |
|---|---|
| Windows UI Kit (Community) | Fluent / Windows visual reference |
| WinUI Gallery | Component behavior and sample page reference |
Fluent-Qt's own source code is released under the MIT License. Bundled assets and packaged runtime dependencies retain their upstream terms; versions, provenance, source-availability rules, and license locations are listed in THIRD_PARTY_NOTICES.md. Product names, logos, and external design references are addressed in TRADEMARKS.md.
