我使用Qt 5.2实现了状态机,没有任何问题。现在我想通过以下命令在特定状态下调用一个插槽:
s2->invokeMethodOnEntry(&label, "showMaximized");
但是当我编译代码时出现以下错误:
错误:'班级QState'没有名为" invokeMethodOnEntry'
的成员是否有其他方法具有相同的功能?我找不到了。 非常感谢
卢卡
答案 0 :(得分:0)
公共Qt 5 API中没有invokeMethodOnEntry
。在Qt 4中曾经有Qt Animation Framework
的实验版本,但它在最新的Qt 4版本中甚至不存在。你在哪里得到过时的Qt文档?
如果您希望在进入状态时运行某些代码,有三种方法可以执行此操作:
将一个插槽连接到状态的entered
信号 - 您很幸运,因为showMaximized
是一个插槽:
connect(s2, SIGNAL(entered()), label, SLOT(showMaximized()));`
将lambda仿函数连接到状态的entered
信号:
QPointer<QLabel> labelPtr(&label);
connect(s2, &QAbstractState::entered, [=labelPtr]{
labelPtr->showMaximized();
});
对状态进行子类化并重新实现onEntry
方法。