最近在使用QT做視頻播放相關界面,使用QT中的QProgressBar作爲進度條,一秒更新一次。之前就遇到一個問題:使用setValue更新進度值時,界面的進度條並沒有及時更新,而是幾秒或十幾秒更新一次。遂查找相關問題,調試代碼發現每秒setValue是執行到的,但是界面爲啥不更新???於是,網速查找資料,無果,因其他事耽擱沒有去解決。今天又注意到這個問題,查找解決方法,無果,但是看到一個相關的描述:不能及更新,於是明白應該是線程在處理其他事件,沒有及時在界面更新進度條。所以能在setValue後,及時將進度值更新到界面即可解決。查找QProgressBar的相關方法,有update()方法,添加代碼成功解決:
progressBar->setValue(num);
progressBar->update();