• 5157阅读
  • 3回复

在循环中,发射一个信号,可是只有循环全部结束之后槽才接受信号 [复制链接]

上一主题 下一主题
离线zanshi
 
只看楼主 倒序阅读 楼主  发表于: 2008-05-04
— 本帖被 XChinux 执行加亮操作(2008-05-04) —
void NeHeWidget::moveNeedle()
{
    moveflag=true;
  for(movex=0;movex<19;movex++)
  {
       for(movey=0;movey<19;movey++)
       {
           emit NeedleMoved(movex,movey);///信号
          updateGL();
           for(int i=0;i<1000;i++)
           {
               int m;
               m++;
               for(int j=0;j<1000;j++)
               {
                   int n;
                  n++;
                   for(int k=0;k<500;k++)
                   {
                       int p;
                       p++;
                   }
               }
           }
           /
       }
      
}
}
void NeHeWidget::floattostr(int newx,int newy)///槽
{
    QFile data("output.txt");//test
    if (data.open(QFile::WriteOnly | QFile::Truncate))
    {
        QTextStream out(&data);
        out << "Result: " << qSetFieldWidth(10) << left << 3.14 << 2.7 << endl;
    } //test
    strX.sprintf("%f", points[newx][newy][0]);
    strY.sprintf("%f", points[newx][newy][1]);
    strZ.sprintf("%f", points[newx][newy][2]);
    emit OverConvert( strX, strY, strZ);
}///
标注的槽与标注的信号相连,但曹只在二重循环全部结束后才接受到信号
离线XChinux

只看该作者 1楼 发表于: 2008-05-04
一、连接信号时可设置处理信号的方式,请参考文档;
二、看看processEvents()能否解决问题
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线xjcook

只看该作者 2楼 发表于: 2008-05-05
信号和槽的连接不是回调函数,执行中有时间差,它应该属于一种异步执行。
尤其是你在循环的时候,cpu都被循环占去了,而且你这个循环的时间也不长,所以槽还没来得及执行呢,你的循环就结束了。
离线lzian
只看该作者 3楼 发表于: 2008-05-05
二楼说的有道理,
我也曾经遇到过这样的问题,
快速回复
限100 字节
 
上一个 下一个