SCXML Traffic Light Example (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
We connect to the states as follows: