QCoreApplication::processEvents();的作用與TApplication::ProcessMessages的作用完全相同,但是沒想到這種用法還有缺點


手動事件處理

最基本的解決方案是明確要求Qt在計算的某些時刻處理等待事件。要做到這一點,必須定期調用QCoreApplication::processEvents()。

下面的例子顯示如何做到這一點:

for (int i = 3; i <= sqrt(x) && isPrime; i += 2) { label->setText(tr("Checking %1...").arg(i)); if (x % i == 0) isPrime = false; QCoreApplication::processEvents(); if (!pushButton->isChecked()) { label->setText(tr("Aborted")); return; } }

 

這種方法有明顯的缺點。例如:假設你想要並行調用兩個類似這樣的循環,其中一個將會阻止另一個直到第一個完成(所以你不能分配計算能力到不同的任務)。這也會使應用程序的事件延遲反應。此外,代碼很難閱讀和分析,因此這種方法只適合單線程中處理的簡短的操作,如:啟動畫面和短期監控操作。

 

http://blog.csdn.net/liang19890820/article/details/51899233


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM