繁体   English   中英

如何在代码的两个部分之间留出时间间隔或延迟同时程序继续? C ++

[英]How to make time gap or delay between two parts of code meanwhile program continue? C++

我有以下代码:

if(collision == 1)
{
    painter->setBrush(QColor(Qt::red));
    painter->setPen(QColor(Qt::black));
    painter->drawEllipse(QPoint(boundingRect().x() + (boundingRect().width() / 1.7),
                             boundingRect().y() + (boundingRect().width() / 2.1)),
                             boundingRect().width() / 5,
                             boundingRect().height() / 10);

    /*THERE SHOUD BE THE TIME GAP AND THEN DO*/
    collision = 0;
}

我想用这个代码来绘制红色椭圆,但只有几秒钟(碰撞后)。 因此,我必须在此代码的两个部分之间留出时间间隔或延迟。 这里的问题是我不知道该怎么做。

我试过sleep()或者wait()或者:

QTime dieTime= QTime::currentTime().addSecs(1);
while( QTime::currentTime() < dieTime )
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);   

但是这些STOP或PAUSE整个程序我只想延迟执行“collision = 0”任何想法?

sleep()wait()停止所有GUI线程,因此它会冻结。 尝试使用singleShotQTimer 例如:

QTimer::singleShot(4000,this,SLOT(mySlot()));

mySlot您可以完成所有需要的工作。 在这种情况下, singleShot不会冻结您的GUI。 例如,将碰撞设置为零并调用更新,它将调用paintEvent并且在此paintEvent ,零碰撞将​​不会再次绘制椭圆。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM