• 6148阅读
  • 2回复

线程里触发信号,加了msleep才能每次都响应槽函数 [复制链接]

上一主题 下一主题
离线nightwish_ny
 
只看楼主 倒序阅读 楼主  发表于: 2012-12-09

在MainWindows有槽:
slots:
void SetValue(int value)
这个SetValue 就打印数值
void MainWindows::SetValue(int value)
{
qDebug() << value;
}


自己定义了一个类class myThread : public QThread
signals:
void sendTest(int a);


run函数里触发信号
void myThread::run()
{
int i;
for(i = 0; i < 300; i++)
{
  emit sendTest(i);
msleep(2);这里加了休眠 主程序里才能每次都调用槽函数,若是不加,有很多次都没有调用槽函数,这是为什么呢???
}
}
离线realfan

只看该作者 1楼 发表于: 2012-12-10
应该不是没调用,而是还没来得及响应。
如果connect用的是Qt::AutoConnection或Qt::QueuedConnection,
信号发出去,主线程要在下一个事件循环中才处理。
子线程一个循环里连续发,速度极容易超过主线程处理速度
离线nightwish_ny
只看该作者 2楼 发表于: 2012-12-14
引用第1楼realfan于2012-12-10 12:58发表的  :
应该不是没调用,而是还没来得及响应。
如果connect用的是Qt::AutoConnection或Qt::QueuedConnection,
信号发出去,主线程要在下一个事件循环中才处理。
子线程一个循环里连续发,速度极容易超过主线程处理速度

原来如此~~
快速回复
限100 字节
 
上一个 下一个