Как исправить колебание QHistoryState - PullRequest
0 голосов
/ 02 июля 2019

Я использую QStateMachine с составным состоянием S, которое состоит из S1 и S2, и QHistoryState с defaultState из S1. Состояние S имеет переходы, запускаемые QPushButtons с 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);
...