在大批量数据处理时,需要长时间等待,这就需要有进度条显示处理进度,因此也就需要建立一个定时器,来实时更新进度条。
数据处理在单独的子线程中进行,在子线程中new一个定时器,但是定时器并没能实时触发更新(update())函数,直到数据处理完了之后,才会触发,也就是说数据处理堵塞了定时器的触发,为了实现定时器的实时触发,则需在子线程内新建一个线程来运行定时器,如下代码所示:
1 timer = new QTimer(); 2 timer->start(100); 3 4 timerThread = new QThread; 5 timer->moveToThread(timerThread); 6 7 connect(timer, SIGNAL(timeout()), this, SLOT(updateProgressBar()), Qt::DirectConnection); 8 timerThread->start();
这样,就可以实时更新进度条了。
参考链接:http://blog.csdn.net/zgrjkflmkyc/article/details/41381327