A beautiful and modern Qt Fluent Design component library with 90+ high-quality out-of-the-box components
QFluentKit is a Qt-based Fluent Design style component library that provides a complete collection of modern UI components. The project adopts the C++17 standard, supports both Qt5/Qt6 versions, and is compatible with Windows, Linux, and macOS platforms.
- 🎨 Fluent Design Style - Modern Microsoft Fluent Design UI specifications
- 🌓 Dark/Light Theme - Automatic theme switching with custom theme color support
- 🧩 90+ Advanced Components - Covering input, display, layout, dialogs, and complete scenarios
- 🦦 Qt5/Qt6 Dual Support - One codebase, fully compatible with both versions
- 🖥️ Cross-Platform - Windows, Linux, macOS support
- 📦 Easy Integration - Dynamic library format with simple CMake integration
- 🎭 Rich Animation Effects - Multiple built-in smooth animation systems
- 🎭 Acrylic Material Effect - Support for Windows acrylic frosted glass effect
| Platform | Support Status | Remarks |
|---|---|---|
| Windows 10/11 | ✅ Full Support | Recommended, best experience |
| Linux | ✅ Supported | Qt5/Qt6 both available |
| macOS | ✅ Supported | Qt5/Qt6 both available |
- Qt 5.12 or higher
- Qt 6.x fully supported
| Platform | Recommended Compiler |
|---|---|
| Windows | MinGW 8.0+ or MSVC 2017+ |
| Linux | GCC 7+ or Clang 5+ |
| macOS | Clang (Xcode 10+) |
- CMake 3.15+
- Qt Modules: Core, Widgets, Svg, Xml
git clone https://github.com/toddming/QFluentKit.git cd QFluentKitmkdir build && cd build cmake -G "MinGW Makefiles" .. mingw32-makemkdir build && cd build cmake .. cmake --build . --config Releasemkdir build && cd build cmake .. make -j$(nproc)Run the example program:
cd build/QFluentExample ./QFluentExample # Linux/macOS QFluentExample.exe # WindowsInstalling QFluentKit to your Qt installation directory allows all Qt projects to use it seamlessly.
Windows (MSVC)
mkdir build && cd build cmake -G "Visual Studio 17 2022" -A x64 -DQFLUENT_INSTALL_TO_QT=ON .. cmake --build . --config Release cmake --install . --config ReleaseWindows (MinGW)
mkdir build && cd build cmake -G "MinGW Makefiles" -DQFLUENT_INSTALL_TO_QT=ON .. mingw32-make mingw32-make installLinux/macOS
mkdir build && cd build cmake -DQFLUENT_INSTALL_TO_QT=ON .. make -j$(nproc) sudo make installAfter installation, simply add to your CMakeLists.txt:
find_package(QFluent REQUIRED) target_link_libraries(MyApp PRIVATE QFluent::QFluent)After installation, files are organized as follows (taking Qt 6.8.3 MSVC as example):
E:/Qt/6.8.3/msvc2022_64/ ├── bin/ │ ├── QFluent.dll # Release DLL │ ├── QFluentd.dll # Debug DLL (with 'd' suffix) │ ├── QFluent.pdb # Debug PDB (MSVC only) │ └── ... ├── lib/ │ ├── QFluent.lib # Release import library │ ├── QFluentd.lib # Debug import library (with 'd' suffix) │ └── cmake/ │ └── QFluent/ # CMake config files │ ├── QFluentConfig.cmake │ ├── QFluentConfigVersion.cmake │ └── QFluentTargets.cmake ├── include/ │ └── QFluent/ # Header files │ ├── FluentGlobal.h │ ├── Theme.h │ ├── FluentIcon.h │ └── ... └── share/ └── QFluent/ └── res/ # Resource files (icons, stylesheets) Note: Debug libraries use the d suffix (e.g., QFluentd.dll, QFluentd.lib), following Qt's convention. This allows Debug and Release versions to coexist in the same directory.
You can also install to a custom location:
mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=/path/to/install .. cmake --build . --config Release cmake --install . --config ReleaseThen in your project, specify the installation path:
# Add to CMAKE_PREFIX_PATH set(CMAKE_PREFIX_PATH "/path/to/install/lib/cmake/QFluent;${CMAKE_PREFIX_PATH}") find_package(QFluent REQUIRED) target_link_libraries(MyApp PRIVATE QFluent::QFluent)Or set QFluent_DIR:
set(QFluent_DIR "/path/to/install/lib/cmake/QFluent") find_package(QFluent REQUIRED) target_link_libraries(MyApp PRIVATE QFluent::QFluent)Add QFluentKit as a subdirectory in your project:
# Add QFluentKit subdirectory add_subdirectory(QFluentKit) # Link QFluent target_link_libraries(MyApp PRIVATE QFluent)- Build QFluentKit to generate
QFluent.dll(Windows) orlibQFluent.so(Linux/macOS) - Include the header directory in your project:
QFluentKit/QFluent/src/ - Link the generated library file
| Option | Default | Description |
|---|---|---|
QFLUENT_INSTALL_TO_QT | OFF | Install to Qt installation directory |
CMAKE_INSTALL_PREFIX | System default | Custom installation path |
BUILD_QWINDOWKIT | OFF | Enable QWindowKit integration |
QWindowKit provides advanced window management features (frameless windows, frosted glass effect, etc.):
# Enable when building the example program set(BUILD_QWINDOWKIT ON CACHE BOOL "Build with QWindowKit support" FORCE) # Or enable via CMake parameter cmake -DBUILD_QWINDOWKIT=ON ..Once enabled, the USE_QWINDOWKIT macro will be defined, allowing access to enhanced window features.
#include <QWidget> #include <QApplication> #include "QFluent/LineEdit.h" #include "QFluent/PushButton.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); // Create a Fluent window QWidget window; window.setWindowTitle("QFluentKit Example"); window.resize(800, 600); // Create a button auto *button = new PrimaryPushButton(&window); button->setText("Click Me"); button->move(350, 280); // Create a line edit auto *lineEdit = new LineEdit(&window); lineEdit->setPlaceholderText("Please enter content..."); lineEdit->move(350, 340); window.show(); return app.exec(); } - Button, PrimaryButton, HyperlinkButton
- CheckBox, RadioButton
- ComboBox, LineEdit, Slider, SpinBox
- SwitchButton, PushButton
- Label, CaptionLabel, StrongLabel
- ImageLabel, IconWidget
- CardWidget, Loading
- DatePicker, TimePicker
- CalendarPicker, CalendarView
- CycleListWidget
- RoundMenu, NavigationPanel, NavigationBar
- Pivot, TabBar
- MessageDialog, ColorDialog, Flyout, TeachingTip
- StackedWidget, ScrollArea, TableView
- ListView, FlowLayout, ExpandLayout
- ProgressBar, ProgressRing
- IndeterminateProgressBar, IndeterminateProgressRing
- InfoBar, ToolTip
- SettingCard, SettingCardGroup
- ExpandSettingCard, OptionsSettingCard
- AcrylicWidget, AcrylicLabel, AcrylicMenu, AcrylicToolTip
QFluentKit/ ├── QFluent/ # Core dynamic library │ ├── src/ │ │ ├── FluentGlobal.h # Global enumerations (ThemeMode, IconType, ThemeStyle) │ │ ├── Theme.h # Theme management system (AUTO/LIGHT/DARK) │ │ ├── Router.h # Routing system (works with StackedWidget) │ │ ├── FluentIcon.h # Icon system (248+ built-in SVG icons) │ │ ├── StyleSheet.h # Stylesheet management system │ │ ├── Animation.h # Animation system base class │ │ ├── QFluent/ # Public component headers │ │ │ ├── BasicInput/ # Basic input components │ │ │ ├── Display/ # Display components │ │ │ ├── DateTime/ # Date and time components │ │ │ ├── Menu/ # Menu components │ │ │ ├── Dialog/ # Dialogs │ │ │ ├── Layout/ # Layout containers │ │ │ ├── Progress/ # Progress components │ │ │ ├── Setting/ # Setting cards │ │ │ └── Material/ # Material effects │ │ └── Private/ # PIMPL private implementation │ └── res/ # Resource files │ ├── images/icons/ # Fluent Design SVG icons │ └── style/ # QSS stylesheets (light/dark) ├── QFluentExample/ # Example application │ ├── src/ │ │ ├── Interface/ # 15 demo interfaces │ │ │ ├── HomeInterface.h │ │ │ ├── BasicInputInterface.h │ │ │ └── ... │ │ └── Window/ # Custom window examples │ │ ├── LoginWindow.h │ │ ├── NavbarWindow.h │ │ └── SplitWindow.h │ └── libs/qwindowkit/ # Optional window management library ├── CMakeLists.txt # Root CMake configuration └── README.md This project is open source under the GPLv3 license.
Issues and Pull Requests are welcome!
- Core window management: QWindowKit
- Design inspiration from: PyQt-Fluent-Widgets
⭐ If you find this project helpful, please give it a Star!

