2013-06-04 131 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

謝謝你...有幫助 –