首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

qt中主线程把cpu全占了怎么处理

2012-03-06 
qt中主线程把cpu全占了怎么办?这是主线程中的函数void MainWindow::on_pushButton_clicked(){i0mythread

qt中主线程把cpu全占了怎么办?
这是主线程中的函数
void MainWindow::on_pushButton_clicked()
{
  i=0;
  mythread *t1=new mythread;
  t1->run();
  QString str;
  while(i<100000)
  {
  i=i+0.001;
  str.setNum(i);
  ui->lineEdit->setText(str);
  repaint();
  }
}
子线程mythread 利用一个定时器发消息,显示一个进度条
void mythread::run()
{
  i=0;
  connect(&timer1,SIGNAL(timeout()),this,SLOT(ValueChanged()));
  timer1.start(1000);
  d1.setvalue(0);
  d1.setrange(1,20);
  d1.show();
  d1.repaint();
}
void mythread::ValueChanged()
{
  if(i<20)
  {
  i=i+1;
  d1.setvalue(i);
  d1.repaint();
  }
  else
  d1.close();
}
程序一运行,子线程的进度条就不动了,为什么?
如果把下面的语句注释了,就可以显示进度条了
while(i<1000)
  {
  i=i+0.001;
  str.setNum(i);
  ui->lineEdit->setText(str);
  repaint();
  }
怎么解决啊?那个大侠教教我,因为我主线程里面需要算一个比较长的程序,我猜测是主程序把cpu全占了,怎么能不让他独占?

[解决办法]
做一个定时器吧, 一段时间 str.setNum
这样不用while(i<1000) 就不会占了.

热点排行