Skip to content

Introduction

Quik is a reactive XML UI framework based on Qt. Define interfaces with XML, manipulate data with C++, and UI syncs automatically.

Pain Points Solved

Traditional QWidget development has these issues:

  • Verbose UI code - Creating widgets, setting properties, adding layouts, connecting signals/slots — a simple panel easily takes hundreds of lines
  • Tedious data sync - Manual setText(), setValue(), forget to sync and bugs appear
  • Low iteration efficiency - Changing a layout requires recompilation, debugging UI is time-consuming
  • Hard to maintain - UI logic mixed with business logic, difficult for newcomers

Quik's solution:

  • XML declares UI - Clear structure, what you see is what you get
  • Reactive binding - Assignment equals update, no manual sync
  • Hot reload - XML changes take effect immediately, double development efficiency
  • Separation of concerns - UI in XML, logic in C++, each does its job

AI Development Friendly

Quik is very friendly for AI-assisted development:

  • XML is markup language - LLMs are naturally good at generating and understanding structured markup
  • Minimal C++ usage - vm.var<T>() one line does it all, no complex signal/slot templates
  • Fixed patterns - XML + C++ combination is clear, easy for AI to learn and reuse

Lower Development Barrier

Quik effectively supports developers of different skill levels:

  • Beginner friendly - No need to deeply understand Qt signal/slot mechanism, just follow XML templates
  • Reduce low-level errors - Reactive binding auto-syncs, avoids common "forgot to update UI" bugs
  • Unified code style - XML structure constrains UI writing, better team code consistency
  • Easier reviews - UI changes are clear at a glance, no need to dig through C++ code for layout logic

Core Capabilities

CapabilityDescription
Declarative UIXML defines interface structure, auto-generates Qt Widgets
Reactive Bindingvm.var like regular variables, assignment updates UI
Conditional Renderingvisible="$enable==1" expression controls visibility
List Renderingq-for data-driven lists, add/remove auto-syncs
Hot ReloadEdit XML during development, refreshes without recompilation

Comparison

Traditional QtQMLQuik
UI DefinitionC++ codeQML languageXML
Data BindingManual signals/slotsAutomaticAutomatic
RuntimeNoneQML engineNone
Type Safety

Use Cases

  • Parameter panels and settings dialogs for tool software
  • Property editors for CAD/CAE software
  • Interactive interfaces requiring rapid iteration

Next Steps

Released under the MIT License