Qt - 简单循环的执行正在逐渐减慢
Qt - execution of simple loop is slowing down gradually
我的主窗口代码中有循环,只是更改屏幕上某些文本框的颜色。它只是for(int i=0; i<200; i++)
,但我想让用户看到每个颜色变化,所以在循环中,我试图添加 sth 像 10 毫秒的暂停一样,所以每次执行在屏幕上都是可见的。
我用了这个:
QTimer t;
t.start(10);
QEventLoop loop;
connect(&t, SIGNAL(timeout()), &loop, SLOT(quit()));
loop.exec();
问题是,我希望保持这个 10 毫秒的速度,所以整个操作大约需要 ~2 秒。不幸的是,它逐渐变慢,如此之难,以至于最后 ~20 次执行甚至需要大约 1 秒
当我<20~50 时看起来相当不错,添加更多会使它显着减慢速度......
我想到了我不是全新的PC,但它的操作非常简单,所以我真的不认为这是因为我的PC速度慢。我认为我的方法错了
附言。在执行过程中,我的应用程序的ram usage
约为~21MB,cpu
约为20-30%
这不是
实现某事的好方法。 QTimer
足以完成这项任务。例如:
QTimer *t = new QTimer;//without loops and sleeping
connect(t, SIGNAL(timeout()), this, SLOT(someSlot()));
t->start(10);
创建someSlot
并在此插槽中更改颜色并执行其他任务。若要在 2 秒后停止计时器,可以使用计数器而不是使用系统时间。
void MainWindow::someSlot()
{
//do something
}
还要考虑到10 ms
非常非常快,人眼无法捕捉到如此快的变化。尝试使用更长的值。
相关文章:
- 简单C++"Hello World"程序的执行时间长
- 来自简单循环的 OpenAcc 错误:内核执行期间的非法地址
- 如何直接在安卓设备上作为可执行文件运行简单的 c++ 程序?
- 从命令提示符使用 MSBuild 调试简单的C++可执行文件
- 如何在特征中对二维数组的列执行简单的算术运算
- 无法与exe一起执行简单的Shell Script/Commonads
- 使用 QT 创建器通过树莓派上的 Wifi 执行简单的终端命令
- 优化一个简单的方程式,用于C 中的执行速度
- Q无法执行简单的控制台程序
- 在垫子矩阵上执行简单的逆和乘法操作
- 在Windows上编译器/执行汇编程序的最简单方法
- 如何使用 CreateProcess 执行简单的命令行
- 无法使用WSO2(Axis2c)执行简单的SOAP操作
- "No such file or directory" 使用 makefile 时在 c++ 中执行简单 fstream 时出错
- 测量时间以执行简单的指令
- 在终止/非活动会话上执行简单查询需要几分钟时间
- 如何加载加载win32 dll和执行简单的winapi与firebreath
- 如何执行简单缩放到曼德布洛特集
- 无法使用opencv执行简单程序,错误"Can't find the entry point of the procedure"
- 是一个std::vector查找,比执行简单操作要快