zdhwhl的个人主页

http://www.qtcn.org/bbs/u/160992  [收藏] [复制]

zdhwhl

  • 0

    关注

  • 0

    粉丝

  • 1

    访客

  • 等级:新手上路
  • 总积分:2
  • 男,1996-03-30

最后登录:2020-08-12

更多资料

日志

求助:线程和connect连接方式

2020-07-09 16:58
void Widget::on_pushButton_2_clicked()
{    

    mytimer = new QTimer(this);    

    connect(mytimer,&QTimer::timeout,this,[=](){        

        qDebug()<<"定时器";  

     },Qt::DirectConnection);    

    mytimer->start(1000);  

    for(int i=0;i<10;i++)    

    {        

        qDebug()<<"for循环";        

        QThread::sleep(1);  

     }
}
运行结果是:10次for循环完成后,才开始每秒调用定时器槽函数。
疑问:我在给定时器做信号绑定时,指定了连接方式为直接连接Qt::DirectConnection,理论上应该是信号发出后立即调用槽函数才对。结果应该是for循环和定时器槽函数交替执行才对。为什么实际运行结果与理论不符?
分类:默认分类|回复:3|浏览:99|全站可见|转载
 

下一篇:

上一篇: 求助:Qt::Blockingqueuedconnection 死锁

 
删除

杯子和盘子:QThread::sleep()阻塞了消息循环

2020-07-23 14:13 -
删除

青空飞羽:for循环阻塞了代码继续向下执行,于是就没有返回到Qt的消息循环中,没有处理到定时消息,也就不会触发定时器的超时信号了

2020-07-09 20:03 -

zdhwhl:如果我在for循环中i==3的时候发射一个信号,在另外一个线程用Qt::DirectConnection方式绑定该信号给一个槽函数,为啥该槽函数却能打断本for循环而直接执行?

2020-07-10 13:55

Powered by phpwind v8.7 Certificate Copyright Time now is:08-12 23:19
©2005-2016 QTCN开发网 版权所有 Gzip disabled