在qt中创建一个qstate
Create a qstate in qt
如果我有这样一个简单的状态机
switch(state)
{
case state_1:
doSomething();
state = state_2;
break;
case state_2:
doSomething_2();
state = state_finished;
break;
}
我如何将这个简单的状态机转换为带有转换的 qstate?
例如是这样的:
TestClass test_class;
QStateMachine machine;
QState *state_1 = new QState(&machine);
QObject::connect(state_1, SIGNAL(entered()), &test_class, SLOT(doSomething1()));
QState *state_2 = new QState(&machine);
QObject::connect(state_2, SIGNAL(entered()), &test_class, SLOT(doSomething2()));
QFinalState *state_finished = new QFinalState(&machine);
TestClassFinishedTransition *finished_transition =
new TestClassFinishedTransition(&test_class);
finished_transition->setTargetState(state_finished);
state_2->addTransition(finished_transition);
machine.setInitialState(state_1);
machine.start();
TestClass 将基于 QObject
class。
我希望这段代码能帮助您开始理解这个概念。但是,您必须仔细阅读 documentation 并通过 Qt 提供的示例。
如果我有这样一个简单的状态机
switch(state)
{
case state_1:
doSomething();
state = state_2;
break;
case state_2:
doSomething_2();
state = state_finished;
break;
}
我如何将这个简单的状态机转换为带有转换的 qstate?
例如是这样的:
TestClass test_class;
QStateMachine machine;
QState *state_1 = new QState(&machine);
QObject::connect(state_1, SIGNAL(entered()), &test_class, SLOT(doSomething1()));
QState *state_2 = new QState(&machine);
QObject::connect(state_2, SIGNAL(entered()), &test_class, SLOT(doSomething2()));
QFinalState *state_finished = new QFinalState(&machine);
TestClassFinishedTransition *finished_transition =
new TestClassFinishedTransition(&test_class);
finished_transition->setTargetState(state_finished);
state_2->addTransition(finished_transition);
machine.setInitialState(state_1);
machine.start();
TestClass 将基于 QObject
class。
我希望这段代码能帮助您开始理解这个概念。但是,您必须仔细阅读 documentation 并通过 Qt 提供的示例。