在程序继续执行的同时,如何使代码的两部分之间存在时间间隔或延迟?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);   

但这些"停止"或"暂停"整个程序我只想延迟执行"碰撞=0"有什么想法吗?

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

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

mySlot中,你可以做所有需要的事情。在这种情况下,singleShot不会冻结您的GUI。例如,将碰撞设置为零并调用update,它将调用paintEvent,在零碰撞的paintEvent中,将不会再次绘制椭圆。

相关内容

  • 没有找到相关文章

最新更新