qt 怎么让程序中间某段代码定时运行,但不能影响其他代码的正常工作?

如题

buffer = socket->readAll();


    anticollision(buffer,carArray);//数据转换

    if(learnFlag)
    {
        ui->textEdit_recv->setText("开始预警");
        if(ui->LeftButton->isChecked()==true)        
            earlyWarningLeft(carArray,border); //判断数据是否不符合规定      
        else
            if(ui->RigthButton->isChecked()==true)
                earlyWarningRight(carArray,border);//判断数据是否不符合规定
           
    }

void earlyWarningLeft(carData carArray[64],int border[64])
{
    for(int i=0;i<64;i++)
    if(border[i]<carArray[i].x)
    warming();
}

如上列,想让warming()函数5秒才报一次警,但是上面的接收函数正常运行该这么办?使用sleep()又会导致整个程序阻塞

QTimer *m_timer = new QTimer(this);
connect(m_timer, SIGNAL(timeout()), this, SLOT(warming()));

m_timer->start(1*1000*5); //every 5 seconds ,每5秒调用一次

 

定时器。可参考:https://blog.csdn.net/qq_28877125/article/details/88389559

C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html