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全占了,怎么能不让他独占?