SCXML Traffic Light (Dynamic, Widgets)#
A widget-based application that uses a dynamically loaded state machine to implement a traffic light.
Traffic Light demonstrates how to connect to the active properties of a state in a dynamically loaded state machine.
The UI is created using Qt Widgets.
Running the Example#
To run the example from Qt Creator, open the Welcome mode and select the example from Examples. For more information, visit Building and Running an Example.
Dynamically Loading the State Machine#
We link against the Qt SCXML module by adding the following lines to the example’s build files.
To .pro when using qmake:
To CMakeLists.txt when using cmake:
We dynamically create the state machine in trafficlight-widgets-dynamic.cpp:
And then instantiate it:
Connecting to States#
In the SCXML file, we specify states for each light: red, yellow, and green. In the <onentry>
element, we specify the event to send when entering the state and the delay in seconds before sending the event. In the <transition>
element, we specify the event that triggers the transition to the state specified by the target
attribute:
We connect to the states as follows: