有时候需要处理一些跟界面无关的但非常耗时的事情,这些事情跟界面在同一个线程中,由于时间太长,导致界面无法响应,处于“假死”状态。
在这种情况下,有一种方法是使用多线程,即在子线程中处理文件保存,主线程负责界面相关。
而如果不想使用多线程,最简单的办法就是在文件保存过程中频繁调用QApplication::processEvents()。
添加:QCoreApplication::processEvents();
作用:让程序处理那些还没有处理的事件,然后再把使用权返回给调用者。
例如:
while(true)
{
·······
//窗口显示
ui->video_window->setPixmap(pixmap);
QCoreApplication::processEvents();
}