如何在 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
我是学习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