我點擊一個按鈕,連接myfuntion見下。我正在使用一個QEventLoop,因爲我在等待一個事件,這將調用_myEventLoop.exit(0);因爲我正在等待一個事件,這將調用_myEventLoop.exit(0);QEventLoop已經在調用exec()之前調用了exit()
當我點擊按鈕,在連續兩次,而無需等待事件發生,我得到的錯誤信息:調用exec之前
QEventLoop::exec: instance 0x22f47378 has already called exec()
我做了呼叫退出(1)(),但它似乎這個退出立即返回,然後由exec()函數通過,因爲它仍在運行返回1,myfunction返回並且只有第一個exec()返回1.
我怎樣才能確定以前在繼續之前調用exec()已經返回?
void myfuntion()
{
_myEventLoop.exit(1);
if(_myEventLoop.exec() == 0)
{
// DoSomething
}
}
的目標是什麼這裏到底是什麼?我沒有看到一遍又一遍重新啓動本地事件循環有什麼意義。 – thuga
我的目標是阻止該功能的用戶,直到某個事件發生。如果該功能被其他人調用來釋放第一個用戶並阻止最後一個呼叫者。 從我所瞭解的eventLoop如何工作我不能和我徹底改變了觀念。 – Giacogiac
@Giacogiac可以請你詳細說明你的方法嗎? – RDP