我从一个循环(进行一些计算)发出信号,该信号触发位于主 GUI 上的进度条更新,在循环结束后,进度条更新为 100%(进程结束时进度条变为隐藏),但是有延迟,进度条保持在 100%,有时鼠标变为忙碌状态,只有几秒钟后进度条才隐藏(表示延迟结束),循环之后什么都没有,所以我什么都不能想到可以让这个延迟。
- 我应该注意,如果循环计算很轻(意味着不需要进行大量计算),则没有这样的延迟。
发射信号在逻辑层的一个类中,我已经尝试通过包含<QtGui/QApplication>
到该类中来做一些事情(在我看来这不是正确的做法,因为这是逻辑层,所以它为什么需要 QtGui 库,但我我只测试一些东西),我把下面的代码qApp->processEvents();
放在循环中,现在事情似乎运行起来了,没有忙碌的鼠标,但仍然存在延迟(当延迟发生时,我可以对 GUI 做出唯一不同的反应,但是有在此延迟结束之前没有更新的结果)。
由于与我的测试processEvents()
我认为它与线程有关,但如果是这样,我该如何纠正延迟行为,当然如果有人认为它可能是别的东西,请告诉。
一些示例代码:
逻辑层类:
#include <QtGui/QApplication>
...
processMethod(...)
{
Loop(...)
{
qApp->processEvents();
emit processBarSignle(value);
...some calculations...
}
emit processBarSignle(100);
}
视图层(主窗口):
on_btn_nextProcess_clicked()
{
m_ui->pBar_process->setVisible(true);
LogicClass->processMethod(...);
m_ui->pBar_process->setVisible(false);
}
谢谢