State machines in Qt
State machines can be used for many purposes, but in this chapter we will only cover topics related to animation.
How to do it…
First, we will set up a new user interface for our example program, which looks like this:
Next, we will include some headers in our source code:
#include <QStateMachine> #include <QPropertyAnimation> #include <QEventTransition>
After that, in our main window's constructor, add the following code to create a new state machine and two states, which we will be using later:
QStateMachine *machine = new QStateMachine(this); QState *s1 = new QState(); QState *s2 = new QState();
Then, we will define what we should do within each state, which in this case will be to change the label's text, as well as the button's position and size:
QState *s1 = new QState(); s1->assignProperty(ui->stateLabel, "text", "Current state: 1"); s1->assignProperty(ui->pushButton, "geometry", QRect(50, 200, 100, 50)); QState *s2 = new QState(); s2->...