注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

沙漠里de烟雨

原创分享,禁止转载

 
 
 

日志

 
 

Qt----repaint() 与 update()  

2014-07-18 17:43:02|  分类: QT5.x与QML |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
最近在做一个显示期货行情的软件,其中主要有k线,柱线以及各种曲线,各种线是做好了,但发现缩放,拖动时界面严重卡,曲线一根根从一个位置靠到另外一个位置,好像在看动画片。在网上查了一下,发现原来是repaint() 惹的祸。原来,repaint()是强制性调用paintEvent 函数,导致当拖动时(如拖动了10px),dx 则从1-到10重复调用10次,这样处理起来,势必耗费大量的cup资源。而换用update()后,可能只调用一次,直接dx=10。其实人的眼睛对变动过于频繁的图像的辨别能力是有限的,所以,用update()对于应用而言是非常有效率的,因为其中9个状态的变化人眼根本无法查觉。 
自将项目中所有用到repaint()的地方均以update()替换后,运行效果感觉流畅了很多,几乎感觉不到卡的存在。
在paintEvent中,要画多根线时,不要使用drawLine多次,这样非常烧cpu资源,应该drawLines 一次性画出这几根线。当然如果遇到某些线有颜色或形态的特别要求的话,drawLine还是必须的。


  评论这张
 
阅读(443)| 评论(1)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017