QState invokeMethodOnEntry错误

时间:2014-04-11 14:50:43

标签: qt methods state

我使用Qt 5.2实现了状态机,没有任何问题。现在我想通过以下命令在特定状态下调用一个插槽:

s2->invokeMethodOnEntry(&label, "showMaximized");

但是当我编译代码时出现以下错误:

错误:'班级QState'没有名为" invokeMethodOnEntry'

的成员

是否有其他方法具有相同的功能?我找不到了。 非常感谢

卢卡

1 个答案:

答案 0 :(得分:0)

公共Qt 5 API中没有invokeMethodOnEntry。在Qt 4中曾经有Qt Animation Framework的实验版本,但它在最新的Qt 4版本中甚至不存在。你在哪里得到过时的Qt文档?

如果您希望在进入状态时运行某些代码,有三种方法可以执行此操作:

  1. 将一个插槽连接到状态的entered信号 - 您很幸运,因为showMaximized是一个插槽:

    connect(s2, SIGNAL(entered()), label, SLOT(showMaximized()));`
    
  2. 将lambda仿函数连接到状态的entered信号:

    QPointer<QLabel> labelPtr(&label);
    connect(s2, &QAbstractState::entered, [=labelPtr]{
      labelPtr->showMaximized();
    });
    
  3. 对状态进行子类化并重新实现onEntry方法。