C++ 警告:状态已添加到QState

C++ 警告:状态已添加到QState,c++,qt,qt5,C++,Qt,Qt5,我试图向QStateMachine添加一个状态,它会发出警告 [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_mach

我试图向
QStateMachine
添加一个状态,它会发出警告

[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);

以下是对此类警告进行故障排除的最简单方法

进入类“Qt\5.4\Src\qtbase\Src\corelib\statemachine\qstatemachine.cpp”,找到方法qstatemachine::addState(QAbstractState*state),并在发出警告的行上放置一个断点。再次运行程序并查看堆栈。它会告诉你发生了什么


此外,代码段中的所有状态最初似乎都是相同的。在创建QState时定义转换和初始状态,看看会发生什么。

也许您会调用此代码两次?你调试了吗?是的,只调用了一次。这很奇怪你确定这是代码的这一部分吗?如果在
m_machine->addState(…)
调用之前和之后放置调试消息,警告消息是否在这些调试消息之间?是的,每当我添加一个状态时,警告就在那里,一个状态已经被添加,然后您可以调试
idle->machine()在调用
addState
之前返回。为你们每个州做这件事。