我想暫停我的程序幾秒鐘,我正在編寫的程序,由c + + Qt.in事實上,當程序到達我的一個函數停止例如5秒,然後繼續下一行。我應該什麼做?如何暫停程序幾秒鐘?
該函數是一個類的成員函數,我想鄰的工作(暫停)爲類的每個實例...
我想暫停我的程序幾秒鐘,我正在編寫的程序,由c + + Qt.in事實上,當程序到達我的一個函數停止例如5秒,然後繼續下一行。我應該什麼做?如何暫停程序幾秒鐘?
該函數是一個類的成員函數,我想鄰的工作(暫停)爲類的每個實例...
如果您正在使用QT5您可以使用下面的技巧:
QMutex mut;
mut.lock();
mut.tryLock(milliseconds);
mut.unlock(); // I am not sure if this is a necessity
用的Qt4,你可以互斥使用QWaitCondition::wait()
;
請記住,如果這是在你的界面線程中,你的GUI將凍結,直到間隔陡峭。
非常感謝你的完美答案... –
如果你真正需要做的是,你有幾種選擇
您可以通過繼承的QThread,使他們的公共(那些被保護,因爲它通常是一個壞主意)
使用QThread'ssleep
方法,或者你也可以用QTimer使用QEventLoopexec
在一起。將定時器的信號連接到QEventLoop的quit()
插槽。這會導致「非阻塞」等待,所以你的應用不會被凍結。
或者,也許你應該改爲拆分代碼爲兩種方法,使第二個中的slot
,並在適當的時候
編輯計時器調用它:有點像,在你吃的方法您使用QTimer::singleShot
調用finishEating
插槽經過X
秒。
您可能還需要閱讀此:http://qt-project.org/doc/qt-5.0/qtcore/thread-basics.html
謝謝你...有幫助 –
這是在主線程還是工作線程? – RobbieE
您能否提供詳細信息爲什麼要實現這一目標?我有一種感覺... – Kcvin
每個類的實例...請參閱編輯的問題,請 –