0
我是新來的QtQMessageBox會阻塞Qt中整個主線程的運行嗎?
我的情況是:由於某些原因,我不得不發出從主線程心跳信號,在同一時間,我想用來創建一個QMessageBox提示窗口:
reply = QMessageBox::question(this, tr("Sure want to quit?"), tr("Sure quit?"), QMessageBox::Yes|QMessageBox::No);
我只是想讓這個消息框阻止來自其他窗口的用戶輸入,但我不想阻止心跳信號。 我該怎麼做?或者這是默認在Qt中完成的?
在我的情況下,將「調用對話框上的exec()」停止心跳信號?你能舉一個簡單的例子來說明你的公司是如何完成的,非常感謝。 – Nyaruko 2014-10-22 08:10:45
@Nyaruko不,'QDialog :: exec'做同樣的事情。它創建一個本地事件循環。本地事件循環可能會很糟糕。你可以閱讀[這篇文章](https://blogs.kde.org/2009/03/26/how-crash-almost-every-qtkde-application-and-how-fix-it-0)來找出原因。 – thuga 2014-10-22 08:18:42
最值得注意的是在本地事件循環中沒有做的是deleteLater執行。正是爲了防止'this'得到'delete'd崩潰。 (如果你實際上'刪除'父母,但是如果你使用'deleteLater',它將不會幫助你。 – 2014-10-22 09:09:56