我想在我用c ++ Qt编写的程序中暂停我的程序几秒钟。事实上当程序到达我的一个函数时它会停止例如5秒然后继续下一行。应该怎么做我呢?
该函数是类的成员函数,我想为该类的每个实例工作(暂停)...
答案 0 :(得分:5)
如果你真的需要这样做,你有几个选择
您可以通过继承QThread并将其公开(这些方法受到保护,因为它通常是一个坏主意)来使用QThread's sleep
方法。
或者您可以将QEventLoop exec
与QTimer一起使用。将定时器的信号连接到QEventLoop的quit()
插槽。这将导致“非阻塞”等待,因此您的应用程序不会保持冻结状态。
或许您应该将代码分成两种方法,将第二种方法分成slot
并在适当的时候用计时器调用
编辑:类似于,在您的吃法中,您使用QTimer::singleShot
在finishEating
秒后拨打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将冻结,直到间隔消失。