2013-06-04 135 views
-2

我想暂停我的程序几秒钟,我正在编写的程序,由c + + Qt.in事实上,当程序到达我的一个函数停止例如5秒,然后继续下一行。我应该什么做?如何暂停程序几秒钟?

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

+0

这是在主线程还是工作线程? – RobbieE

+0

您能否提供详细信息为什么要实现这一目标?我有一种感觉... – Kcvin

+0

每个类的实例...请参阅编辑的问题,请 –

回答

4

如果您正在使用QT5您可以使用下面的技巧:

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

用的Qt4,你可以互斥使用QWaitCondition::wait();

请记住,如果这是在你的界面线程中,你的GUI将冻结,直到间隔陡峭。

+0

非常感谢你的完美答案... –

5

如果你真正需要做的是,你有几种选择
您可以通过继承的QThread,使他们的公共(那些被保护,因为它通常是一个坏主意)

使用QThread'ssleep方法,或者你也可以用QTimer使用QEventLoopexec在一起。将定时器的信号连接到QEventLoop的quit()插槽。这会导致“非阻塞”等待,所以你的应用不会被冻结。

或者,也许你应该改为拆分代码为两种方法,使第二个中的slot,并在适当的时候

编辑计时器调用它:有点像,在你吃的方法您使用QTimer::singleShot调用finishEating插槽经过X秒。
您可能还需要阅读此:http://qt-project.org/doc/qt-5.0/qtcore/thread-basics.html

+0

谢谢你...有帮助 –