查看完整版本: [-- 6410板子QT画图 --]

QTCN开发网 -> Qt嵌入式开发 -> 6410板子QT画图 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

1138455004 2016-05-08 10:11

6410板子QT画图

我开了个定时器,定时40或80等在一个IO输出脉冲,确实按这个定时间隔输出脉冲,但是当加入update代码,paintevent造成定时间隔拉长到200ms,特意试过,paintevent中无论画图耗时30ms还是干脆屏蔽全部代码只是个空函数,都造成定时间隔变长到200ms,且此时鼠标响应迟钝。另外有做了个按钮,进入后是while死循环翻转io,不加update 和QCoreApplication::processEvents()时io翻转很快,但是加了这两句,200ms才翻一次,如果不加QCoreApplication::processEvents(),界面鼠标不再响应。如何做到在定时器控制下的间隔刷屏更新绘图区?

never_forget 2016-05-08 15:58
QTest qwait() 函数吧,效果应该还是可以实现得

1138455004 2016-05-08 18:31
[attachment=15148]图片说明下帖描述

1138455004 2016-05-08 18:44
上面右上是正常显示的图片,所有控件都显示出来,但是它240ms更新一次,左边是用示波器测量ARM板上一个IO,40ms时基,可以看出重复周期站6格,鼠标卡顿。但是我时基定时器定时间隔80ms。下图我把paintevent最后加了一句setUpdatesEnabled(FALSE);显示是白屏,但是点击中下方combobox后,图片显示了,控件是没显示的,此时下左显示IO观察的重复周期是80ms。鼠标流畅。在240ms中,我的刷屏只需要      40ms,其他时候不知系统在干什么,一串脉冲变为低后代表代码在paintevent已经结束。在setUpdatesEnabled(FALSE)语句加上,所有控件不显示,并且白屏,只要combobox点中,才以80ms定时间隔输出脉冲串以及更新。

1138455004 2016-05-08 18:59
while (1)
    {
        WritePLL(1234);        //包含有IO代码
        MyProcess();            //处理画图数据,画图实在paintevent中实现
        BusProcess();
        CSFPGAL();                //IO代码
        CSFPGALH);
        update();
        QCoreApplication::processEvents();
    }
也试过上面这样死循环代码,如果不加update();和QCoreApplication::processEvents();
无法刷新,出现白屏,鼠标也不动。但是死循环中IO翻转代码执行频率很快,加上后正常显示,但是刷屏周期同样长达240ms,
这说明与所用定时器没关系,系统执行完刷屏后也没回到我死循环中。而是不知道在哪晃荡,连鼠标都不流畅。

caicaiking 2016-05-10 09:14
这样的绘图可能会拖累处理器的处理时间,建议你是用第三方控件绘图试一下,这样可能会改善你的绘图速度,从而让软件流畅运行。


查看完整版本: [-- 6410板子QT画图 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled