添加没有发送方和接收方Qt 5.2的转换

时间:2014-04-15 09:01:59

标签: c++ qt transition state

我实现了一个三态机并声明了一个改变机器当前状态的函数:     void changeState(s1); 包含以下命令以更改机器状态:     S0-> addTransition(S1) 编译时没有出现错误,但是当我运行应用程序时,会出现以下消息:

QObject :: setParent:无法设置父级,新父级位于不同的线程

我是否必须将信号连接到信号上?

非常感谢你的帮助。

卢卡

1 个答案:

答案 0 :(得分:0)

根据您的解释,我会告诉问题不是来自连接本身。 QT不接受父/子位于不同的帖子中。这意味着您的整个状态机必须在一个单独的线程中运行。

为了在不需要父节点的情况下创建QStatemachine的主线程不同的线程中运行它,添加所有状态,然后使用QObject :: moveToThread将其移动到不同的线程。

你也可以从另一个线程完全创建你的状态机,但我从来没有这样做过。在main中创建元素大多数时候是更直接的实现。然后,您可以根据需要移动它们。

是的,您可以在没有信号的情况下添加转换。在这种情况下,只需通过其他方式激活状态,重新实现QAbstractTransition