Skip to content

Latest commit

 

History

688 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

English | 简体中文

Fluent-Qt logo

Fluent-Qt

A cross-platform Fluent-style C++ UI component library for Qt Widgets.

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

Fluent-Qt Gallery on Windows with Mica

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.

🤖 Build with AI

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

🧱 Dependencies

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

🚀 Quick Start

Link FluentQt to a CMake project using one of the following methods. FetchContent is recommended for new projects.

C++ setup

Integration CMake
FetchContent integration FetchContent_MakeAvailable(fluentqt)
Source integration add_subdirectory(Fluent-Qt)
Installed package integration find_package(FluentQt CONFIG REQUIRED)

FetchContent integration

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)

Source integration

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)

Installed package integration

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.

C++ minimal example

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.

Optional Python compatibility

The PySide6 compatibility layer exposes Fluent-Qt's native C++ widgets to Python through Shiboken6.

python -m pip install FluentQt

See the Python guide for installation, examples, compatibility, and source builds.

🛠 Build

Library

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

The build script selects parallelism from available CPU and memory. See the build workflow for configuration.

Source package

Create the reduced library source package for offline or source integration:

python3 tools/dev/fluent_qt_build.py build/fluentqt --target fluent_qt_source_package

WebAssembly

Use the live WebAssembly Gallery for evaluation. Local toolchain setup, builds, browser smoke tests, and Pages deployment are documented in the WebAssembly workflow.

🖼 Gallery

Gallery is used to browse, demonstrate, and validate FluentQt components.

C++ Web Gallery

Online: project website · standalone page.

C++ Gallery packages

Download the current Windows, macOS, or Linux Gallery package from GitHub Releases. The maintained build and package matrix lives in the packaging workflow.

Run the C++ Gallery locally

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-presets

On Apple Silicon, use vcpkg-osx:

cmake --preset vcpkg-osx
python3 tools/dev/fluent_qt_build.py \
  --preset vcpkg-osx \
  --target fluent_qt_gallery

Use 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.

Package the C++ Gallery locally

Use the platform preset and verification steps in the Packaging Workflow.

Python compatibility Gallery

The Python Gallery is available from PyPI.

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

FluentQt-Gallery installs the matching FluentQt version automatically.

📚 Documentation

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.

🔗 References

Entry Purpose
Windows UI Kit (Community) Fluent / Windows visual reference
WinUI Gallery Component behavior and sample page reference

License

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.

About

FluentQt (Fluent-Qt): Fluent / WinUI-style Qt Widgets UI components and Gallery for native C++ desktop apps, with optional PySide6 bindings and WebAssembly.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

108 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages