• 5200阅读
  • 2回复

请教一个关于按键触发循环事件的问题 [复制链接]

上一主题 下一主题
离线linzem
 
只看楼主 倒序阅读 楼主  发表于: 2010-08-15
主要任务目标就是一旦“计算”按键按下将触发事件
PushButtonCalculate = new QPushButton( this );
PushButtonCalculate->setText( tr( "Calculate" ) );
connect(PushButtonCalculate,SIGNAL(clicked()),this,SLOT(slotCalculate()));

然后在满足条件的情况下,循环计算y=x1+x2,并显示在一个QListWidget列表中,而且保证每次计算完毕等待五秒才开始下一次
void Task::slotCalculate()
{
  
    PushButtonCalculate->setEnabled( false );
    while(status)
    {
                double x1 = qrand()%10;
                LabelX1Value->setText(QString::number(x1));
                double x2 = qrand()%10;
                LabelX2Value->setText(QString::number(x2));
                double y = x1+x2;
                LabelYValue->setText(QString::number(y));
                
                int length = 0;
                QString msg=userName+":"+LabelYValue->text();
                if((length=tcpSocket->write(msg.toLatin1(),msg.length()))!=msg.length())
                {
                    return ;
                }
                mySleep::msleep(5000);
        }

}

问题是我按照以上编写之后,run都成功,可是一旦按下“计算”就陷入假死状态必须强制关闭。如果把循环去掉,靠手工每次按下按键,程序运行良好。
感谢大人能帮助我找出问题修改,不胜感谢。
离线dbzhang800

只看该作者 1楼 发表于: 2010-08-15
基本原则:GUI线程中永远不要用sleep函数。请使用QTimer
离线linzem
只看该作者 2楼 发表于: 2010-08-15
回 1楼(dbzhang800) 的帖子
非常感谢,解决了
快速回复
限100 字节
 
上一个 下一个