最近在使用QT做视频播放相关界面,使用QT中的QProgressBar作为进度条,一秒更新一次。之前就遇到一个问题:使用setValue更新进度值时,界面的进度条并没有及时更新,而是几秒或十几秒更新一次。遂查找相关问题,调试代码发现每秒setValue是执行到的,但是界面为啥不更新???于是,网速查找资料,无果,因其他事耽搁没有去解决。今天又注意到这个问题,查找解决方法,无果,但是看到一个相关的描述:不能及更新,于是明白应该是线程在处理其他事件,没有及时在界面更新进度条。所以能在setValue后,及时将进度值更新到界面即可解决。查找QProgressBar的相关方法,有update()方法,添加代码成功解决:
progressBar->setValue(num);
progressBar->update();