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->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 and off. 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 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.


