• 6014阅读
  • 8回复

[提问]Qt中导致CPU占有率提高的原因有哪些? [复制链接]

上一主题 下一主题
离线luck__y
 

只看楼主 倒序阅读 楼主  发表于: 2013-04-27
关键词: 求助问题
  最近一直在学习Qt,自己学习之余写了个拼图游戏,程序写完之后,运行一切都正常,但是CPU占有率非常高,只要这个程序一运行,电脑的风扇就转的很快.我以前vs2010+winapi也写过一个拼图游戏,但是没有出现这个问题.有知道有哪些原因会导致程序对CPU的占有比例很大,这个问题困扰了我很久了,希望大神能够告诉解决的方法源程序 PinTu.zip (536 K) 下载次数:5
离线ffii4455

只看该作者 1楼 发表于: 2013-04-27
这个。。。谁能猜出来。。。。
离线圣域天子

只看该作者 2楼 发表于: 2013-04-27
有线程吗?没进行适当的 sleep ?
离线luck__y

只看该作者 3楼 发表于: 2013-04-27
回 2楼(圣域天子) 的帖子
没有使用,贴图我就是放在一个widget的paintEvent里面的
离线kimtaikee

只看该作者 4楼 发表于: 2013-04-27
你这问题太笼统了,没有针对性,你写个
  1. while(1){
  2.   // nonsense
  3. }

也会让CPU占有率很高的

离线luck__y

只看该作者 5楼 发表于: 2013-04-27
回 4楼(kimtaikee) 的帖子
我把源程序发上来了,你看看哪里出问题了咯,我用的是Qt5.0.2
离线kimtaikee

只看该作者 6楼 发表于: 2013-04-28
  1. void MyWidget::drawGameText(QPainter &paint)
  2. {
  3.     QFont font("Arial",15);
  4.     paint.setPen(QPen(Qt::black,3));
  5.     font.setBold(true);
  6.     paint.setFont(font);
  7.     paint.drawText(380,150,tr("时间"));
  8.     paint.drawText(400,170,QString::number(pt->getTime()));
  9.     paint.drawText(380,240,tr("步数"));
  10.     paint.drawText(400,260,QString::number(pt->getStep()));
  11.     pt->drawSmallPic(paint);
  12. //    update();
  13. }

注掉update函数,你调用update函数就会调用paintEvent,你这样会造成无限循环!

离线luck__y

只看该作者 7楼 发表于: 2013-04-28
回 6楼(kimtaikee) 的帖子
我注视掉后果然正常了,太谢谢你了呀!
离线彩阳

只看该作者 8楼 发表于: 2013-04-28
的确,不能在paintEvent中调用update函数。
上海Qt开发联盟,热忱地欢迎你的加入!
快速回复
限100 字节
 
上一个 下一个