Two-way Button Example▲

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-&
gt;assignProperty(&
amp;button, "text"
, "Off"
);
off-&
gt;setObjectName("off"
);
QState *
on =
new
QState();
on-&
gt;setObjectName("on"
);
on-&
gt;assignProperty(&
amp;button, "text"
, "On"
);

The state machine has two states; on and off. When either state is entered, the text of the button will be set accordingly.
off-&
gt;addTransition(&
amp;button, &
amp;QAbstractButton::
clicked, on);
on-&
gt;addTransition(&
amp;button, &
amp;QAbstractButton::
clicked, off);
When the state machine is in the off state and the button is clicked, it will transition to the on state; when the state machine is in the on state and the button is clicked, it will transition to the off 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.