Fluent-Qt

A Fluent UI component library for Qt Widgets

Build cross-platform desktop apps with input, navigation and data display components, built-in theming and smooth animations.

C++17 Qt 5.15+ / 6.2+ MIT

Python / PySide6 Use the same controls from Python through PySide6 pip install FluentQt Gallery
Actual Fluent-Qt Gallery Home capture on Windows with 3D and Mica enabled, showing the control catalog and samples
UI runtime
Qt Widgets
Qt support
5.15+ / 6.2+
Toolchain
CMake + C++17
Platforms
Windows / macOS / Linux / Web

03 / GUI SKILL

Build desktop GUIs with AI

  • ProjectC++ / PySide6 application structure
  • UIFluent components, themes, and color
  • Fast previewSee saved changes in Live Scene, then check the compiled C++ sample
  • ChecksLight / Dark, narrow layouts, and interaction
REFERENCE BUILD DeepSeek Desktop
C++ · FluentQt
Native DeepSeek Desktop reference UI built with build-fluentqt-gui

Task groups, run timeline, composer, and Light / Dark themes.

Independent FluentQt build; not an official DeepSeek app.

Upstream project

04 / QUICK START

Quick start

Place this after add_executable(my_app ...). See hello_world for a complete project.

  • Keep the Widgets project and event loop you already have
  • The library target depends only on Qt Widgets
  • Use the same application-facing API with Qt 5 and Qt 6
CMakeLists.txt
# Add Fluent-Qt to your existing project
include(FetchContent)

FetchContent_Declare(
  fluentqt
  GIT_REPOSITORY https://github.com/calvinhxx/Fluent-Qt.git
  GIT_TAG v1.9.3
  GIT_SHALLOW TRUE
)
FetchContent_MakeAvailable(fluentqt)

target_link_libraries(
  my_app PRIVATE FluentQt::FluentQt
)

05 / SPATIAL · OPTIONAL 3D EXTENSION

Familiar widgets. A new dimension.

Place an existing QWidget composition in SpatialView to add perspective, rotation, and depth. Ordinary 2D apps do not need to enable it.

  • Keep your widgets

    Keep layouts, signals, slots, and models. SpatialItem controls the pose of the whole widget composition.

  • Compose in depth. Refresh on demand.

    OpenGL on desktop, WebGL in WebAssembly. Unchanged content reuses its textures.

  • Opt in. Keep the 2D path.

    Link FluentQt::Spatial in C++, or use the optional Python binding. Gallery falls back to 2D when acceleration is unavailable.

Gallery: Settings → 3D Gallery, then Controls → Spatial.

SpatialView · C++ / WebAssembly
Open separately ↗
Run the actual SpatialView

Two cards, live charts, and camera controls from the same C++ Gallery sample. Qt / WASM loads only when you start it.

Real Qt Widgets / WebGL. Adjust the camera sliders and move the pointer across the scene to explore depth.

06 / POSITIONING

Native controls C++ APIs

Each control has its own C++ API, states, and layout behavior

  1. 01

    Native Qt Widgets usage

    Uses signals, slots, layouts, and the event loop

  2. 02

    One API for Qt 5 and Qt 6

    Application code does not need separate call sites for each major Qt version

  3. 03

    CMake integration

    Include FluentQt/FluentQt.h and link FluentQt::FluentQt

07 / COMPONENTS

Controls by purpose

A selection from Gallery

Button control page in Fluent-Qt Gallery on Windows with Mica
01

BASIC INPUT

Button

Includes default, accent, disabled, and icon states

SplitButtonComboBoxCheckBox
Collections page in Fluent-Qt Gallery on Windows with Mica
02 / COLLECTIONSListView · GridView · TreeView
Navigation and window UI in Fluent-Qt Gallery on Windows with Mica
03 / SHELLNavigation · Windowing
FoundationTheme · Typography · FontIcon
Basic inputButton · ComboBox · ToggleSwitch
CollectionsListView · GridView · TreeView
Date & timeCalendarView · DatePicker · TimePicker
Dialogs & flyoutsContentDialog · Flyout · TeachingTip
LayoutCard · Accordion · Expander
Menus & toolbarsMenu · MenuBar · CommandBar
NavigationNavigationView · TabView · Breadcrumb
ScrollingScrollView · PipsPager · AnnotatedScrollBar
Status & infoInfoBar · ProgressRing · Toast
Text fieldsLineEdit · PasswordBox · AutoSuggestBox
WindowingWindow · TitleBar · WindowBackdrop

08 / DOWNLOAD

Download Gallery

Desktop packages are for offline evaluation; integrate applications through CMake or PyPI.