# silent-studio-cn/jqt architecture

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

- Interactive diagram: https://gitdiagram.com/silent-studio-cn/jqt
- Repository: https://github.com/silent-studio-cn/jqt

## Overview

JQt is a Java binding for Qt 6 that lets developers build native desktop interfaces in Java, with Qt providing rendering, events, and platform integration. The main workflow is to create a QApplication, compose and show a window with widgets and layouts, then run the Qt event loop; Java API calls cross JNI into the C++ bridge. Documented branches include theming and animation, platform-specific utilities, and SQL, serial, printing, and OpenGL APIs. Source evidence is partial, so unsampled capability links are documented rather than inferred from code.

Main entry points: [`java/org/jqt/QApplication.java`](https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QApplication.java) (Application lifecycle), [`java/org/jqt/QMainWindow.java`](https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QMainWindow.java) (Main window), [`tools/jqt-gen/src/main.rs`](https://github.com/silent-studio-cn/jqt/blob/main/tools/jqt-gen/src/main.rs) (Generator entry), [`native/jqt_bridge.cpp`](https://github.com/silent-studio-cn/jqt/blob/main/native/jqt_bridge.cpp) (JNI bridge)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_java_ui["Java UI API"]
  node_app["Application lifecycle<br/>[QApplication.java]"]
  node_main_window["Main window<br/>[QMainWindow.java]"]
  node_widget["Widget base<br/>[QWidget.java]"]
  node_controls["UI controls<br/>[QPushButton.java]"]
  node_layout["Layouts<br/>[QVBoxLayout.java]"]
  node_frame["Frame containers<br/>[QFrame.java]"]
end

subgraph group_runtime["Native Runtime"]
  node_jni["JNI bridge<br/>[jqt_bridge.cpp]"]
  node_qt["Qt 6 runtime"]
end

subgraph group_capabilities["Product Capabilities"]
  node_theme["Themes and styling<br/>[QApplication.java]"]
  node_animation["Animation API"]
  node_exclusive["Platform utilities<br/>[GlobalHotkey.java]"]
  node_sql_db["SQL database<br/>[QSqlDatabase.java]"]
  node_sql_query["SQL query results<br/>[QSqlQuery.java]"]
  node_serial["Serial ports<br/>[QSerialPort.java]"]
  node_printing["Printing and PDF<br/>[QPrinter.java]"]
  node_opengl["OpenGL canvas<br/>[QOpenGLWidget.java]"]
end

subgraph group_generator["API Generator"]
  node_generator_entry["Generator entry<br/>[main.rs]"]
  node_generator_parse["API parser<br/>[parse.rs]"]
  node_generator_model["API model<br/>[model.rs]"]
  node_generator_emit["API generation<br/>[generate.rs]"]
end

node_developer(("Java developer"))

node_developer -->|"creates"| node_app
node_app -->|"creates window"| node_main_window
node_main_window -->|"composes UI"| node_controls
node_main_window -->|"sets layout"| node_layout
node_main_window -->|"shows window"| node_widget
node_app -->|"calls via JNI"| node_jni
node_jni -->|"invokes Qt"| node_qt
node_app -->|"configures theme"| node_theme
node_app -->|"sets animation theme"| node_animation
node_sql_db -->|"creates query"| node_sql_query
node_generator_entry -->|"uses parser"| node_generator_parse
node_generator_entry -->|"uses generator"| node_generator_emit
node_generator_parse -->|"builds model"| node_generator_model
node_generator_emit -->|"reads model"| node_generator_model
node_app -.->|"offers platform APIs"| node_exclusive
node_app -.->|"exposes module"| node_serial
node_app -.->|"exposes module"| node_printing
node_app -.->|"exposes module"| node_opengl

click node_app "https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QApplication.java"
click node_main_window "https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QMainWindow.java"
click node_widget "https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QWidget.java"
click node_controls "https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QPushButton.java"
click node_layout "https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QVBoxLayout.java"
click node_frame "https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QFrame.java"
click node_jni "https://github.com/silent-studio-cn/jqt/blob/main/native/jqt_bridge.cpp"
click node_theme "https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QApplication.java"
click node_animation "https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/JQtAnimationTheme.java"
click node_exclusive "https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/GlobalHotkey.java"
click node_sql_db "https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QSqlDatabase.java"
click node_sql_query "https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QSqlQuery.java"
click node_serial "https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QSerialPort.java"
click node_printing "https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QPrinter.java"
click node_opengl "https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QOpenGLWidget.java"
click node_generator_entry "https://github.com/silent-studio-cn/jqt/blob/main/tools/jqt-gen/src/main.rs"
click node_generator_parse "https://github.com/silent-studio-cn/jqt/blob/main/tools/jqt-gen/src/parse.rs"
click node_generator_model "https://github.com/silent-studio-cn/jqt/blob/main/tools/jqt-gen/src/model.rs"
click node_generator_emit "https://github.com/silent-studio-cn/jqt/blob/main/tools/jqt-gen/src/generate.rs"

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_app,node_main_window,node_widget,node_controls,node_layout,node_frame toneBlue
class node_jni,node_qt toneAmber
class node_theme,node_animation,node_exclusive,node_sql_db,node_sql_query,node_serial,node_printing,node_opengl toneMint
class node_generator_entry,node_generator_parse,node_generator_model,node_generator_emit toneRose
class node_developer toneIndigo
```

## Components

### Java UI API

- [Application lifecycle](https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QApplication.java): `java/org/jqt/QApplication.java`
- [Main window](https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QMainWindow.java): `java/org/jqt/QMainWindow.java`
- [Widget base](https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QWidget.java): `java/org/jqt/QWidget.java`
- [UI controls](https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QPushButton.java): `java/org/jqt/QPushButton.java`
- [Layouts](https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QVBoxLayout.java): `java/org/jqt/QVBoxLayout.java`
- [Frame containers](https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QFrame.java): `java/org/jqt/QFrame.java`

### Native Runtime

- [JNI bridge](https://github.com/silent-studio-cn/jqt/blob/main/native/jqt_bridge.cpp): `native/jqt_bridge.cpp`
- **Qt 6 runtime**

### Product Capabilities

- [Themes and styling](https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QApplication.java): `java/org/jqt/QApplication.java`
- [Animation API](https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/JQtAnimationTheme.java): `java/org/jqt/JQtAnimationTheme.java`
- [Platform utilities](https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/GlobalHotkey.java): `java/org/jqt/GlobalHotkey.java`
- [SQL database](https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QSqlDatabase.java): `java/org/jqt/QSqlDatabase.java`
- [SQL query results](https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QSqlQuery.java): `java/org/jqt/QSqlQuery.java`
- [Serial ports](https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QSerialPort.java): `java/org/jqt/QSerialPort.java`
- [Printing and PDF](https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QPrinter.java): `java/org/jqt/QPrinter.java`
- [OpenGL canvas](https://github.com/silent-studio-cn/jqt/blob/main/java/org/jqt/QOpenGLWidget.java): `java/org/jqt/QOpenGLWidget.java`

### API Generator

- [Generator entry](https://github.com/silent-studio-cn/jqt/blob/main/tools/jqt-gen/src/main.rs): `tools/jqt-gen/src/main.rs`
- [API parser](https://github.com/silent-studio-cn/jqt/blob/main/tools/jqt-gen/src/parse.rs): `tools/jqt-gen/src/parse.rs`
- [API model](https://github.com/silent-studio-cn/jqt/blob/main/tools/jqt-gen/src/model.rs): `tools/jqt-gen/src/model.rs`
- [API generation](https://github.com/silent-studio-cn/jqt/blob/main/tools/jqt-gen/src/generate.rs): `tools/jqt-gen/src/generate.rs`

### Other components

- **Java developer**

## Connections

- Java developer → Application lifecycle: creates (evidence: `README.md`)
- Application lifecycle → Main window: creates window (evidence: `README.md`)
- Main window → UI controls: composes UI (evidence: `README.md`)
- Main window → Layouts: sets layout (evidence: `README.md`)
- Main window → Widget base: shows window (evidence: `README.md`)
- Application lifecycle → JNI bridge: calls via JNI (evidence: `README.md`)
- JNI bridge → Qt 6 runtime: invokes Qt (evidence: `README.md`)
- Application lifecycle → Themes and styling: configures theme (evidence: `java/org/jqt/QApplication.java`)
- Application lifecycle → Animation API: sets animation theme (evidence: `java/org/jqt/QApplication.java`)
- SQL database → SQL query results: creates query (evidence: `java/org/jqt/QSqlDatabase.java`)
- Generator entry → API parser: uses parser (evidence: `tools/jqt-gen/src/main.rs`)
- Generator entry → API generation: uses generator (evidence: `tools/jqt-gen/src/main.rs`)
- API parser → API model: builds model (evidence: `tools/jqt-gen/src/parse.rs`)
- API generation → API model: reads model (evidence: `tools/jqt-gen/src/generate.rs`)
- Application lifecycle → Platform utilities: offers platform APIs (evidence: `README.md`)
- Application lifecycle → Serial ports: exposes module (evidence: `README.md`)
- Application lifecycle → Printing and PDF: exposes module (evidence: `README.md`)
- Application lifecycle → OpenGL canvas: exposes module (evidence: `README.md`)
