今天学习的内容是状态机入门,首先简单介绍一下。
作用:提供一种维护复杂应用程序状态的方法。 关键字复杂应用程序说明在简单的对话框应用程序中占不到便宜。
依赖: QObject和Qt的属性系统。
组成:状态机(QStateMachine) 、状态(QState) 、切换(transition)。
以我的理解最简单的状态机这样描述: 一个状态机(QStateMachine)里包含了多种状态(QState),我们通过切换(transition)来从一个状态到另一个状态。
例:
QStateMachine* machine = new QStateMachine; //状态机
QState* state1 = new QState(machine); //状态1
QState* state2 = new QState(machine); //状态2
//状态1对应的三元状态组(某个对象的某种属性的值)
state1->assignProperty(ui->radioButton,"pos",QPoint(0,0));
state1->assignProperty(ui->radioButton,"checked",false);
//状态2对应的三元状态组
state2->assignProperty(ui->radioButton,"pos",QPoint(100,100));
state2->assignProperty(ui->radioButton,"checked",true);
//添加切换(切换的方式不止这一种)
state1->addTransition(ui->pushButton,SIGNAL(clicked()),state2);
state2->addTransition(ui->pushButton,SIGNAL(clicked()),state1);
machine->setInitialState(state1); //设置初始态(必须设置初始态,不然它拒绝开始)
machine->start();//启动状态机