Skip to content

Repository files navigation

uq-plugin-example

A Qt6 QML plugin example built with CMake for UniDesk/Uniquenium, featuring fully independent build systems for the main application and plugins, with QML-to-C++ integration.

Architecture

This plugin follows the same architecture as OfficialPlugin, including:

  • Plugin System: Based on Qt plugin mechanism + QML dynamic loading
  • BackendAll: Singleton for translation management and cross-component communication
  • ExamplePlugin: Component module containing QML and backend
  • Settings: Plugin settings page with independent storage
  • SignalHandler: Plugin signal handler for main program signal reception
  • Translation: Multi-language support via Qt Linguist

Directory Structure

uq-plugin-example/
├── CMakeLists.txt # Build configuration
├── Plugin.h / Plugin.cpp # Plugin entry, register QML types
├── BackendAll.h / BackendAll.cpp # Singleton, translation management
├── ExamplePlugin/ # Component module
│ ├── ExamplePlugin.qml # Component QML
│ ├── ExamplePluginOptions.qml # Component options page
│ ├── ExamplePluginBackend.h # Component backend header
│ ├── ExamplePluginBackend.cpp # Component backend implementation
│ └── qmldir # QML module definition
├── Settings.qml # Plugin settings page
├── SignalHandler.qml # Signal handler
├── plugin-info.json # Plugin metadata
├── defaultSettings.json # Default settings
├── singleton.h / stdafx.h # Utility headers
├── translations/ # Translation files
│ ├── BackendAll_zh_CN.ts
│ └── BackendAll_en_US.ts
├── media/ # Resource files
└── deploy.bat # Packaging script

How to Build

  1. Open CMakeLists.txt in Qt Creator
  2. Select Release configuration
  3. Build the project (Build > Build Project)

How to Package

Run deploy.bat to extract the build output to dist/ directory:

deploy.bat # Normal packaging (auto-finds temp/bin under build/)
deploy.bat --clean # Clean dist/ first
deploy.bat --build-dir <path> # Specify build output directory
deploy.bat --build-dir=<path> # Use equals sign to specify path
deploy.bat -b <path> # Short form
deploy.bat "<path>" # Pass path directly

Examples:

deploy.bat --build-dir "build\Qt_MSVC2022_64bit-Release\temp\bin"
deploy.bat -b "build\Qt_MSVC2022_64bit-Release\temp\bin"
deploy.bat "build\Qt_MSVC2022_64bit-Release\temp\bin"

How to Use

  1. Build and package the plugin
  2. Copy the dist/uq-plugin-example/ folder to:
    • <Uniquenium-install>/data/plugins/uq-plugin-example/
    • or %APPDATA%/Uniquenium/Plugins/uq-plugin-example/
  3. Restart Uniquenium

Customizing the Plugin

  1. Modify plugin info: Edit plugin-info.json to change plugin ID, name, author, etc.
  2. Add new components: Create QML files in a new subdirectory, add qmldir, and register in plugin-info.json
  3. Add new backends: Create C++ classes in the component directory and register them in Plugin::registerQmlTypes()
  4. Update translations: Edit .ts files in translations/ directory
  5. Add resources: Place images, etc. in media/ directory

Key Features

  • Independent Build: Each plugin has its own CMake configuration
  • QML Singleton: BackendAll provides singleton access via QML_SINGLETON
  • Translation Support: Multi-language switching via BackendAll.retranslate()
  • Plugin Settings: Independent settings storage via UniDeskSettings with pluginId
  • Signal System: Receive main program signals via SignalHandler.qml
  • Auto Packaging: One-click packaging via deploy.bat

About

example plugin

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages