首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ Qt:检查QStateMachine的当前状态

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

Stack Overflow用户
提问于 2011-12-15 20:08:22
回答 4查看 9.5K关注 0票数 12

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

thx

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-15 20:11:01

你试过QStateMachine::configuration()吗?

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

从上面的url中摘录的

代码语言:javascript
复制
// QStateMachine::configuration() gives you the current states.

while(stateMachine->configuration().contains(s2))
{
     //do something
}
票数 15
EN

Stack Overflow用户

发布于 2015-03-18 12:46:24

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

代码语言:javascript
复制
// 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);

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

代码语言:javascript
复制
qDebug() << m_Machine.property("state");
票数 7
EN

Stack Overflow用户

发布于 2017-01-14 22:39:37

来自Qt 5.7 Documentation

QSet QStateMachine::configuration()常量

返回此状态机当前所处的最大一致状态集(包括并行状态和最终状态)。如果状态s在配置中,则s的父级也在c中。但是,请注意,机器本身并不是配置的显式成员。

示例用法:

代码语言:javascript
复制
bool IsInState(QStateMachine& aMachine, QAbstractState* aState) const
{
   if (aMachine_.configuration().contains(aState)) return true;
   return false
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8519890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档