我已經從循環(它進行一些計算)發出信號觸發進度條更新位於主GUI上,循環結束後進度條更新爲100%(進度條變爲當進程結束時隱藏),但比延遲時間長,進度條保持100%,並且有時鼠標變爲繁忙狀態,並且只有在幾秒鐘後進度條纔會隱藏(表明延遲結束),在那個循環之後沒有任何東西,所以我能想到的任何東西都可以使這個延遲。QProgressBar完成加載後無法解釋的延遲
- 我應該注意到,如果循環計算是輕的(意思是不需要進行大量的計算),那麼就沒有這樣的延遲。
的發出信號是在邏輯層在類中,我有包括<QtGui/QApplication>
成類(的聲音,我不應該做的事情試一下,因爲這是邏輯層,它爲什麼要需要QtGui庫,但我只測試一些東西),我把下面的代碼qApp->processEvents();
放在循環中,現在事情似乎窒息,沒有忙的鼠標,但仍然有一個延遲(唯一不同的是我可以與圖形用戶界面,雖然這種延遲發生,但沒有更新的結果,直到這個延遲結束)。
由於測試processEvents()
我認爲它是與線程相關的東西,但如果是這樣的話,我該如何糾正延遲行爲,當然如果有人認爲它可能是別的東西,請告訴。
一些示例代碼:
邏輯層類:
#include <QtGui/QApplication>
...
processMethod(...)
{
Loop(...)
{
qApp->processEvents();
emit processBarSignle(value);
...some calculations...
}
emit processBarSignle(100);
}
View層(主窗口):
on_btn_nextProcess_clicked()
{
m_ui->pBar_process->setVisible(true);
LogicClass->processMethod(...);
m_ui->pBar_process->setVisible(false);
}
由於
你的方法仍然存在延遲(我認爲延遲較少,但很難說)。 – GoldenAxe