原创文章,可以转载,转载时请以超链接形式保留本文地址、作者信息和本声明。否则将追究法律责任。
前几节讲述的都是状态机运行的过程,没有结束状态。任何一个状态机都应该有一个结束状态。那如何停止状态机呢,或者说如何进入终止态呢?
Qt状态机框架中,有一个特殊的类QFinalState,这个类定义了状态机的终止状态,我们仅需要简单的将QFinalState的对象A加入到状态机中,然后定义一个状态迁移到该A就可以终止状态机了。状态机在终止时会触发QStateMachine::finished()信号,我们可以根据该信号做一些“文章”。我们声明一个OnHalt()槽函数,关联QStateMachine::finished()信号,看代码:
声明:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QStateMachine>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
public slots:
void OnExitStateS1(void);
void OnEnterStateS2(void);
void OnHalt(void);
private:
Ui::MainWindow *ui;
QStateMachine machi