Two-way Button Example¶
Two-way button example shows how to use The State Machine Framework to implement a simple state machine that toggles the current state when a button is clicked
main.cpp Example File¶
twowaybutton.pro Example File¶
The Two-way button example shows how to use The State Machine Framework to implement a simple state machine that toggles the current state when a button is clicked.
int main(int argc, char **argv) { QApplication app(argc, argv); QPushButton button; QStateMachine machine;The application’s main() function begins by constructing the application object, a button and a state machine.
QState *off = new QState(); off->assignProperty(&button, "text", "Off"); off->setObjectName("off"); QState *on = new QState(); on->setObjectName("on"); on->assignProperty(&button, "text", "On");The state machine has two states;
on
andoff
. When either state is entered, the text of the button will be set accordingly.off->addTransition(&button, &QAbstractButton::clicked, on); on->addTransition(&button, &QAbstractButton::clicked, off);When the state machine is in the
off
state and the button is clicked, it will transition to theon
state; when the state machine is in theon
state and the button is clicked, it will transition to theoff
state.machine.addState(off); machine.addState(on);The states are added to the state machine; they become top-level (sibling) states.
machine.setInitialState(off); machine.start();The initial state is
off
; this is the state the state machine will immediately transition to once the state machine is started.button.resize(100, 50); button.show(); return app.exec(); }Finally, the button is resized and made visible, and the application event loop is entered.