2016-04-20 4 views
0

Я пытаюсь добавить штат к QStateMachine, и это дает предупреждение, чтоВнимание: состояние уже был добавлен в QState

[20,04 13:31:02 W] QStateMachine :: addState: состояние имеет уже добавлен в этот аппарат

Однако, я не добавлял состояние раньше, это первый раз. Вот мой код:

idle = new QState(); 
start_z = new QState(); 
lock = new QState(); 

m_machine->addState(idle); 
m_machine->addState(start_z); 
m_machine->addState(lock); 
+0

Возможно, вы вызываете этот код дважды? Вы отлаживали? – thuga

+0

Да, его только один раз. это очень странно – andreahmed

+0

Вы уверены, что это в этой части вашего кода, где это происходит? Если вы отправляете сообщения отладки до и после вызовов 'm_machine-> addState (...)', появляется ли предупреждающее сообщение между этими сообщениями отладки? – thuga

ответ

1

Вот самый простой способ устранения таких предупреждений.

Перейдите в класс «Qt \ 5.4 \ Src \ qtbase \ src \ corelib \ statemachine \ qstatemachine.cpp», найдите способ QStateMachine :: addState (состояние QAbstractState *) и поместите точку останова на строку, где она дает предупреждение. Запустите программу еще раз и увидите стек. Он расскажет, что происходит.

Также кажется, что все штаты изначально одинаковы в вашем фрагменте. Определите переходы и начальное состояние, так как создайте QState и посмотрите, что произойдет.