首页 新闻 搜索 专区 学院

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

0
悬赏园豆:40 [待解决问题]

我的代码如下: 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(10);

qDebug()<<"hh";

}

void MyDialog::Disapper() {

  qDebug()<<"we";

reject();

}

输出台: hh we

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

hugo_something的主页 hugo_something | 初学一级 | 园豆:11
提问于:2015-10-20 16:05
< >
分享
所有回答(1)
0

槽函数是你的timeout触发的吧,2.4秒触发的话,那就是hh输出后才输出we

2012 | 园豆:19149 (专家六级) | 2015-10-26 10:42

但是我把sleep(1)改为sleep(10),输出结果是hh才到we,这我就不懂了,求解答?

支持(0) 反对(0) hugo_something | 园豆:11 (初学一级) | 2015-10-26 11:19

@hugo_something: 如果无论改多长时间都这样,是否是触发的定时时间是排队的,必须处理完这个构造函数才能继续后续的事件

http://www.kuqin.com/qtdocument/qtimer.html 这句话“一旦窗口系统事件队列中的所有事件都已经被处理完,一个定时为0的QTimer就会到时间”是否是原因

支持(0) 反对(0) 2012 | 园豆:19149 (专家六级) | 2015-10-26 14:54

@2012: 有可能,之前我也有这样的考虑,但就是不太确定。再问你一个问题,我看你有接触过Qt,你觉得Qt怎么样,特别是Linux Qt的发展前途(钱途)。我是今年刚毕业的新人,现在在公司这里做工控产品的Linux Qt界面(公司是做工控产品的),现在主要是根据客户不同的界面需求进行代码的修改和界面设计,感觉只是在修改代码,学不到东西。而且现在Qt感觉没落了,并且Qt界面只是为嵌入式系统做界面服务,不是核心岗位(感觉以后想转管理不好弄),看不懂前景的感觉。有在考虑投身java行业,但又觉得java的人太多(层次不齐),不知道怎么发展?能分析一下吗?Qt?C++?java?本科生一枚。

支持(0) 反对(0) hugo_something | 园豆:11 (初学一级) | 2015-10-26 16:37

@hugo_something: 基于QT也不错,就像当年的C++ MFC之类,在你精通了之后,再学习其他的就会快很多,一切都是浮云

重点找找资料学学关于QT的设计机制和相关知识,可扩展到LINUX的平台知识,这个毕竟是目前企业的主流平台

相对来说QT范围窄一些,可以学学JAVA,毕竟人力需求量较大

支持(0) 反对(0) 2012 | 园豆:19149 (专家六级) | 2015-11-01 09:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册