如何在 QT 的同一个函数中休眠?

How to sleep within the same function in QT?

我是学习QT的学生。 我想在同一个函数内休眠(延​​迟),但我不能像我想的那样休眠。

void test(){
        cardTurning(i, 0);
        // I want to sleep for 3 seconds at here
        cardTurning(i, 1);
}

在那里睡觉应该做什么?

我已经用过QThread::sleep(3);,但它让睡眠有两个功能。

我想在 cardTurning(i, 0) 后休眠三秒,然后工作 cardTurning(i, 1)。

谢谢。

如果您要使用睡眠功能,您将睡眠整个程序。 在这种类型的延迟下,您可以使用 QTimer::singleShot 函数,它只在您的间隔后调用一次,而不会使整个系统休眠。它以毫秒为间隔。

您可以在下面看到一个基本示例;

#include <QCoreApplication>
#include <QDebug>
#include <QTimer>
void print1(int x,int y){
    qDebug()<<"value = "<<x<<" "<<y;
}

void Test(){
    print1(3,2);
    QTimer::singleShot(3000,[](){
       print1(4,5);

    });

}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    Test();
    print1(10,10);
    return a.exec();
}

预期输出为;
值 = 3 2
值 = 10 10
值 = 4 5