天嵌 ARM开发社区

 找回密码
 注册
查看: 1887|回复: 0

窗口控件造成cpu占用率很高,这是为什么

[复制链接]
zyf224 发表于 2010-11-26 00:13:03 | 显示全部楼层 |阅读模式
问题简述:tq2440 linux qt4.5环境下,在一个画直线的程序中,主窗口中定义了多个QLabel对象,造成CPU不堪重负

具体描述:
我在主窗口(继承自QWidget类)的左半边画一些直线,画线的频率大约是10条/秒,画线的操作是重载paintEvent函数完成的。
因为画线后需要马上显示,所以没有用update(),我调用的是QWidget类的函数repaint(int x,int y,int w,int h)来发出绘图事件,每次repaint的区域不超过10*30

主窗口右边是8个QLabel,这些QLabel都是我用Qt Creator1.3.0 里的界面设计工具加上去的。

我把这个程序移植到开发板上,开发板是tq2440,Linux系统,已经移植了qt4.5运行环境。从pc的ftp登陆到开发板,cd到程序所在目录,用命令 ./xxxxx -qws启动程序(xxxx是程序名)

问题来了:这个程序在开发板上运行时,开发板CPU占用率达到了60%,这个CPU占用率也太夸张了

我做的测试:我把8个QLabel减到了只剩4个,CPU占用率下降到了40%;我把剩下的4个QLabel也删了,然后在程序中自己定义它们,并且去掉了QLabel的字体、背景等设置,
CPU占用率下降到15%。看来的确是QLabel的问题。

疑问:为什么QLabel会占用这么多CPU资源?
我怀疑repaint的时候也会去刷新QLabel。但是我每次调用repaint的时候都是在repaintd的参数里面指定了一块很小的区域(10*30),并且保证这个区域不会覆盖到那8个QLabel
的位置,为什么重画的时候还会去刷新QLabel?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-9-28 03:31 , Processed in 1.027278 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表