Coming from Qt / C++
If you've built desktop apps with Qt, tape's component model will feel natural — but without the framework overhead, MOC step, or C++ complexity.
signals & slots
Qt
signals: and slots: in class header. MOC generates glue code. Runtime string-based connection.
Tape
event on_click() + fire on_click(). Typed function pointer — resolved at compile time. No MOC, no runtime lookup.
widget hierarchy
Qt
QWidget inheritance tree. Override paintEvent, sizeHint. Parent-child ownership.
Tape
No inheritance. Components compose via slot and view {} trees. Leaf components implement paint/measure.
styling
Qt
QSS (Qt Style Sheets) — CSS subset, applied at runtime, string-based selectors.
Tape
#style region — sets typed props on components. Compile-time validated. No runtime selector engine.
build system
Qt
CMake + MOC + UIC + RCC. Separate .ui files, .qrc resources, .h/.cpp split.
Tape
tape build app.tape -o app.exe — one command. Components, styles, resources, tests all in .tape files.
what stays the same
- - Native compiled (no interpreter in prod)
- - Component-based UI architecture
- - Props/properties drive component state
- - Custom painting for leaf widgets
- - Desktop-first (not web-to-native)