我正在使用具有由S1和S2组成的复合状态S以及具有defaultState为S1的QHistoryState的QStateMachine。状态S具有由QPushButton触发的,以S1和S2以及历史状态为目标的转换。当触发向S2的转换,然后反复触发向历史状态的转换时,我将进入不同的状态S1,S2,S1,S2 ...为什么会发生这种情况?每次单击“历史记录”,状态S就会退出,应该将其记录为所处的状态,并且可能只是一个状态,对吗?为什么会振荡以及如何预防?谢谢。
button1 = new QPushButton(tr("S1"));
button2 = new QPushButton(tr("S2"));
button3 = new QPushButton(tr("history"));
machine = new QStateMachine();
S = new QState();
machine->addState(S);
machine->setInitialState(S);
S1 = new QState(S);
S2 = new QState(S);
S->setInitialState(S1);
his = new QHistoryState(S);
his->setDefaultState(S1);
s->addTransition(button1, SIGNAL(clicked()),S1);
s->addTransition(button2, SIGNAL(clicked()), S2);
s->addTransition(button3, SIGNAL(clicked()), his);