# hubenchang0515/qttheme architecture

> Architecture diagram of the GitHub repository hubenchang0515/qttheme, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/hubenchang0515/qttheme
- Repository: https://github.com/hubenchang0515/qttheme

## Overview

QtTheme provides Flat QSS themes for Qt applications, plus a desktop configurator for selecting, previewing, and exporting theme resources. The main workflow is to choose a theme and colors, preview the resulting style, then export or embed its resources; C++ and Python APIs also let applications query available options and load QSS. The README documents an online preview/export flow as well. Configurator and packer links reflect the named source modules and documented workflow; their implementations were not sampled, so those internal connections are not inferred.

Main entry points: [`src/python/QtTheme`](https://github.com/hubenchang0515/qttheme/tree/master/src/python/QtTheme) (Python APIs), [`src/resource/QtTheme.qrc`](https://github.com/hubenchang0515/qttheme/blob/master/src/resource/QtTheme.qrc) (Qt resource bundle), [`src/ThemeConfigurator.cpp`](https://github.com/hubenchang0515/qttheme/blob/master/src/ThemeConfigurator.cpp) (Theme configurator), [`src/python/QtTheme/PySide2`](https://github.com/hubenchang0515/qttheme/tree/master/src/python/QtTheme/PySide2) (PySide2 adapter)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_config["Theme configuration"]
  node_desktop["Configurator app<br/>[main.cpp]"]
  node_window["Main window<br/>[mainwindow.cpp]"]
  node_configure["Theme configurator"]
  node_preview["Theme preview<br/>[ThemePreview.cpp]"]
  node_packer["Resource packer<br/>[ZipPacker.cpp]"]
end

subgraph group_runtime["Theme runtime"]
  node_manager["C++ theme API<br/>[ThemeManager.cpp]"]
end

subgraph group_assets["Theme resources"]
  node_qss["QSS themes"]
  node_icons["Theme icons"]
  node_resources["Qt resource bundle<br/>[QtTheme.qrc]"]
end

subgraph group_bindings["Language bindings"]
  node_python["Python APIs"]
  node_pyqt5["PyQt5 adapter"]
  node_pyqt6["PyQt6 adapter"]
  node_pyside2["PySide2 adapter"]
  node_pyside6["PySide6 adapter"]
end

node_user(("Theme user"))
node_qtapp(("Qt application"))
node_online["Online exporter"]
node_zip["Exported package"]

node_user -->|"opens"| node_desktop
node_desktop -->|"starts"| node_window
node_user -->|"selects colors"| node_configure
node_configure -->|"previews selection"| node_preview
node_configure -->|"exports resources"| node_packer
node_manager -->|"reads styles"| node_qss
node_manager -->|"initializes"| node_resources
node_qtapp -->|"queries and loads"| node_manager
node_python -->|"provides adapter"| node_pyqt5
node_python -->|"provides adapter"| node_pyqt6
node_python -->|"provides adapter"| node_pyside2
node_python -->|"provides adapter"| node_pyside6
node_pyside2 -->|"loads embedded styles"| node_resources
node_pyside2 -->|"reads styles"| node_qss
node_resources -->|"embeds"| node_qss
node_resources -->|"embeds"| node_icons
node_user -.->|"previews and exports"| node_online
node_online -.->|"exports package"| node_zip
node_packer -->|"creates package"| node_zip

click node_desktop "https://github.com/hubenchang0515/qttheme/blob/master/src/main.cpp"
click node_window "https://github.com/hubenchang0515/qttheme/blob/master/src/mainwindow.cpp"
click node_configure "https://github.com/hubenchang0515/qttheme/blob/master/src/ThemeConfigurator.cpp"
click node_preview "https://github.com/hubenchang0515/qttheme/blob/master/src/ThemePreview.cpp"
click node_packer "https://github.com/hubenchang0515/qttheme/blob/master/src/ZipPacker.cpp"
click node_manager "https://github.com/hubenchang0515/qttheme/blob/master/src/QtTheme/ThemeManager.cpp"
click node_python "https://github.com/hubenchang0515/qttheme/tree/master/src/python/QtTheme"
click node_pyqt5 "https://github.com/hubenchang0515/qttheme/tree/master/src/python/QtTheme/PyQt5"
click node_pyqt6 "https://github.com/hubenchang0515/qttheme/tree/master/src/python/QtTheme/PyQt6"
click node_pyside2 "https://github.com/hubenchang0515/qttheme/tree/master/src/python/QtTheme/PySide2"
click node_pyside6 "https://github.com/hubenchang0515/qttheme/tree/master/src/python/QtTheme/PySide6"
click node_qss "https://github.com/hubenchang0515/qttheme/tree/master/src/resource/theme"
click node_icons "https://github.com/hubenchang0515/qttheme/tree/master/src/resource/icon"
click node_resources "https://github.com/hubenchang0515/qttheme/blob/master/src/resource/QtTheme.qrc"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_desktop,node_window,node_configure,node_preview,node_packer,node_user toneBlue
class node_manager toneAmber
class node_qss,node_icons,node_resources toneMint
class node_python,node_pyqt5,node_pyqt6,node_pyside2,node_pyside6 toneRose
class node_qtapp,node_online,node_zip toneIndigo
```

## Components

### Theme configuration

- [Configurator app](https://github.com/hubenchang0515/qttheme/blob/master/src/main.cpp): `src/main.cpp`
- [Main window](https://github.com/hubenchang0515/qttheme/blob/master/src/mainwindow.cpp): `src/mainwindow.cpp`
- [Theme configurator](https://github.com/hubenchang0515/qttheme/blob/master/src/ThemeConfigurator.cpp): `src/ThemeConfigurator.cpp`
- [Theme preview](https://github.com/hubenchang0515/qttheme/blob/master/src/ThemePreview.cpp): `src/ThemePreview.cpp`
- [Resource packer](https://github.com/hubenchang0515/qttheme/blob/master/src/ZipPacker.cpp): `src/ZipPacker.cpp`

### Theme runtime

- [C++ theme API](https://github.com/hubenchang0515/qttheme/blob/master/src/QtTheme/ThemeManager.cpp): `src/QtTheme/ThemeManager.cpp`

### Theme resources

- [QSS themes](https://github.com/hubenchang0515/qttheme/tree/master/src/resource/theme): `src/resource/theme`
- [Theme icons](https://github.com/hubenchang0515/qttheme/tree/master/src/resource/icon): `src/resource/icon`
- [Qt resource bundle](https://github.com/hubenchang0515/qttheme/blob/master/src/resource/QtTheme.qrc): `src/resource/QtTheme.qrc`

### Language bindings

- [Python APIs](https://github.com/hubenchang0515/qttheme/tree/master/src/python/QtTheme): `src/python/QtTheme`
- [PyQt5 adapter](https://github.com/hubenchang0515/qttheme/tree/master/src/python/QtTheme/PyQt5): `src/python/QtTheme/PyQt5`
- [PyQt6 adapter](https://github.com/hubenchang0515/qttheme/tree/master/src/python/QtTheme/PyQt6): `src/python/QtTheme/PyQt6`
- [PySide2 adapter](https://github.com/hubenchang0515/qttheme/tree/master/src/python/QtTheme/PySide2): `src/python/QtTheme/PySide2`
- [PySide6 adapter](https://github.com/hubenchang0515/qttheme/tree/master/src/python/QtTheme/PySide6): `src/python/QtTheme/PySide6`

### Other components

- **Theme user**
- **Qt application**
- **Online exporter**
- **Exported package**

## Connections

- Theme user → Configurator app: opens
- Configurator app → Main window: starts
- Theme user → Theme configurator: selects colors
- Theme configurator → Theme preview: previews selection
- Theme configurator → Resource packer: exports resources
- C++ theme API → QSS themes: reads styles
- C++ theme API → Qt resource bundle: initializes
- Qt application → C++ theme API: queries and loads
- Python APIs → PyQt5 adapter: provides adapter
- Python APIs → PyQt6 adapter: provides adapter
- Python APIs → PySide2 adapter: provides adapter
- Python APIs → PySide6 adapter: provides adapter
- PySide2 adapter → Qt resource bundle: loads embedded styles
- PySide2 adapter → QSS themes: reads styles
- Qt resource bundle → QSS themes: embeds
- Qt resource bundle → Theme icons: embeds
- Theme user → Online exporter: previews and exports
- Online exporter → Exported package: exports package
- Resource packer → Exported package: creates package
