标题:很奇怪的现象,求助
作者:jyxhappy
日期:2010-02-03 11:59
内容:
编程目的:arm板上采1024个数,用这1024个数画线,等到arm上又采到1024个数后,刷新这条线,就这样子不断刷新。
我现在在程序中编写一段代码模拟获得这1024个数,并且不断的变化,使用repaint (FALSE); 或update();屏幕刷新会一会快一会慢,有的时候停下来了,一动鼠标又开始运行,诡异!我把代码贴出来大家帮我看看好吗,谢谢。
float aa[1024];
int f=100;//sin的频率从100开始
void C***::paintEvent(QPaintEvent *e)
{
for (int ll=150; ll
#1 [318065268 02-05 15:34]
usleep(100);
这个不要加。这个会导致整个应用程序进程在此终止100ms而非函数执行到这暂停。
而这种暂停会导致绘图事件处理队列内容忽多忽少吧。
用timer,connect(timer,SIGNAL(timeout()),this,SLOT(update());timer->start(100);
#2 [shiroki 02-05 22:33]
别把计算放paintevent里, 这样是看不到曲线变化的, 因为这个paintevent要到下次进入事件循环的时候才能被调到, 这个中间过程不管变化了多少屏幕都不会有变化。
应该是在timer里去计算, 然后调 update。 计算也不能写死循环, 这样会占用cpu资源, 一样影响事件循环的正常进行。
还有个方法是自己主动调用 processEvents让事件被处理, 这个一般在绘图计算比较多而且无法避免的情况下用。