如何使用 Qt 为相同的功能创建一个 2 任务?

How do I create a 2 task for same function using Qt?

我在玩Qt。我正在使用一个超声波传感器,如果我启动玩具,它会正常工作。

目前,我在做什么?例如,我编写了一个玩具程序,我会启动玩具然后它会开始连续行走,如果有人在超声波传感器前面,那么它会感应到并停止行走。 (这工作正常)。这就是我创造的。

Toystart Thread:

bool Toystart::Limit()
{
    if(Dist <= 55)
    {
        return true;
    }
    return false;
}

main Thread:

int sensor = 0;

if (toystart->Limit() )
{
    if(sensor == 0)
      {  
           toystart->Stop_talking();
           delay (5000);

           sensor = 1;
           break;
      }
}

我到底想要什么?

上述代码运行良好,我想创建更多功能。例如,娃娃前面的某个人停止说话 5 秒,然后它会再次检查静止的 Obst,它会停止说话。它需要在 5 秒后再次检查是否还有 Obst 它将转到那里的新功能它会说请离开我然后在 5 秒后如果 Obst 不在那里它会走。

但这是一个阻塞调用。您的函数卡住了 5 秒,并且根据 delay() 的实现方式,它可能会使您的整个应用程序对任何其他调用和事件无响应。

伪代码:

if (obstacle is near) {
  if (last_operation == "wait") {
    last_operation = "Action";
    takeAction();
  } else {
    last_operation = "wait";
    wait();
  }
} else { // no obstacle
  last_operation = "go";
  go();
}

这就是你要找的吗?