KDStateMachineEditor API Documentation  1.2.50
KDStateMachineEditor - Library for visualizing and editing state charts


The KDAB State Machine Editor Library is a framework that can be used to help develop full-featured State Machine Editing graphical user interfaces and tools. Output from such applications is in metacode or QML that can then be used in larger Qt or QtQuick projects.

For a full description of the KDAB State Machine Editor Library, read our wiki on GitHub, https://github.com/KDAB/KDStateMachineEditor/wiki.


The main feature of KDStateMachineEditor is visualizing and editing state charts.

Note: A proof-of-concept application called kdstatemachineditor executable is part of this repository and will be built automatically. It can be run from the bin/ directory once the project built.

KDSME visualizing microwave_parallel.scxml

KDSME visualizing microwave_parallel.scxml

KDSME visualizing stickman.scxml

KDSME visualizing stickman.scxml

KDSME visualizing trafficreport.scxml (using a different theme)

KDSME visualizing trafficreport.scxml (using a different theme)

KDSME visualizing a live-running QScxmlStateMachine

KDSME visualizing a live-running QScxmlStateMachine

KDSME embedded in another application (here: GammaRay)

KDSME embedded in another application (here: GammaRay)


Building and running

Install the dependencies (here: Ubuntu):

$ sudo apt-get install cmake qt5-default graphviz-dev \
                       qtbase5-private-dev libqt5qml-graphicaleffects


$ mkdir build
$ cd build
$ cmake ..
$ make

Start the test app:

$ ./bin/kdstatemachineeditor

Known Issues

The editor part of the library still is somewhat "rough"; not a lot of development time has been spend on streamlining this feature. KDStateMachineEditor's main user is KDAB's GammaRay, a tool for introspecting Qt application. GammaRay has the capability to display the state chart of a QStateMachine embedded in the application. It's also possible to inspect the live configuration changes of the state machine. Zooming into child state (machines) is another feature; all backed by KDStateMachineEditor.


KDAB will happily accept external contributions, but substantial contributions require a signed Copyright Assignment Agreement.

Contact info@.nosp@m.kdab.nosp@m..com for more information about the Copyright Assignment Agreement.

Please submit your contributions or issue reports from our GitHub space at https://github.com/KDAB/KDStateMachineEditor


The KDAB State Machine Editor Library is (C) 2014-2021 Klarälvdalens Datakonsult AB (KDAB), and is licensed according to the terms of the LGPL 2.1.

Commercial licensing terms are available in the included file LicenseRef-KDAB-KDStateMachineEditor.txt.

For terms of redistribution, refer to the corresponding license agreement.

About KDAB

This State Machine Editor Library is supported and maintained by Klarälvdalens Datakonsult AB (KDAB).

The KDAB Group is the global No.1 software consultancy for Qt, C++ and OpenGL applications across desktop, embedded and mobile platforms.

The KDAB Group provides consulting and mentoring for developing Qt applications from scratch and in porting from all popular and legacy frameworks to Qt. We continue to help develop parts of Qt and are one of the major contributors to the Qt Project. We can give advanced or standard trainings anywhere around the globe on Qt as well as C++, OpenGL, 3D and more.

Please visit https://www.kdab.com to meet the people who write code like this.

Stay up-to-date with KDAB product announcements:

Klarälvdalens Datakonsult AB (KDAB)
"The Qt, C++ and OpenGL Experts"
Create Qt State Machine metacode using a graphical user interface