hugo_something
慢跑的哇
采纳率20%
2015-10-20 07:29 阅读 2.3k

迷惑?Qt槽函数不是立即被执行的吗?

我的代码如下:
MyDialog::MyDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::MyDialog)
{
ui->setupUi(this);
QTimer *timer=new QTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(Disapper()));
timer->start(2400);
sleep(1);
qDebug()<<"hh";
}
void MyDialog::Disapper()
{
qDebug()<<"we";
reject();

}

输出台:
hh
we

MyDialog是一个对话框,在外面被以模态exec()调用,2.4s后自动关闭,为什么槽函数没有立即执行,而是先执行输出hh才输出we?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • aitile 足下尺 2015-11-03 10:58

    并非如此,是否直接执行取决于connect的最后一个参数。你的程序设定定时器过期后才会显示we,那么输出当然就是这样。

    点赞 评论 复制链接分享
  • u011012932 一去丶二三里 2016-09-01 03:09

    先输出"hh"是对的,因为先构造了MyDialog,然后等到2.4s后超时,调用Disapper()槽函数,再输出"we",然后退出!

    点赞 评论 复制链接分享

相关推荐