如何暂停程序几秒钟?

时间:2013-06-04 14:19:39

标签: qt time

我想在我用c ++ Qt编写的程序中暂停我的程序几秒钟。事实上当程序到达我的一个函数时它会停止例如5秒然后继续下一行。应该怎么做我呢?

该函数是类的成员函数,我想为该类的每个实例工作(暂停)...

2 个答案:

答案 0 :(得分:5)

如果你真的需要这样做,你有几个选择 您可以通过继承QThread并将其公开(这些方法受到保护,因为它通常是一个坏主意)来使用QThread's sleep方法。

或者您可以将QEventLoop execQTimer一起使用。将定时器的信号连接到QEventLoop的quit()插槽。这将导致“非阻塞”等待,因此您的应用程序不会保持冻结状态。

或许您应该将代码分成两种方法,将第二种方法分成slot并在适当的时候用计时器调用

编辑:类似于,在您的吃法中,您使用QTimer::singleShotfinishEating秒后拨打X广告位。
您可能还想阅读此内容:http://qt-project.org/doc/qt-5.0/qtcore/thread-basics.html

答案 1 :(得分:4)

如果您使用Qt5,您可以使用以下技巧:

QMutex mut;
mut.lock();
mut.tryLock(milliseconds);
mut.unlock(); // I am not sure if this is a necessity

使用Qt4,您可以在互斥锁上使用QWaitCondition::wait();

请记住,如果这是在您的界面线程中,您的gui将冻结,直到间隔消失。