C++ Qt:检查QStateMachine的当前状态

JAC*_*TER 9 c++ qt qstatemachine

我正在尝试在Qt(C++)中实现状态机.如何检查QStateMachine的当前状态?我在文档中找不到方法.

谢谢

Hem*_*lia 14

你试过QStateMachine::configuration()吗?

参考http://www.qtcentre.org/threads/42085-How-to-get-the-current-state-of-QStateMachine

摘自上面的网址:

// QStateMachine::configuration() gives you the current states.

while(stateMachine->configuration().contains(s2))
{
     //do something
}
Run Code Online (Sandbox Code Playgroud)


Api*_*urn 7

您可以将属性分配给QStateMachine本身.

// QState        m_State1;
// QState        m_State2;
// QStateMachine m_Machine;

m_State1.assignProperty(m_Label,    "visible", false);
m_State1.assignProperty(&m_Machine, "state",   1);

m_State2.assignProperty(m_Label,     "visible", true);
m_State2.assignProperty(&m_Machine,  "state",   2);
Run Code Online (Sandbox Code Playgroud)

然后,可以从动态属性中读取当前状态.

qDebug() << m_Machine.property("state");
Run Code Online (Sandbox Code Playgroud)