首页| 论坛| 消息

标题:槽函数执行顺序的问题
作者:笑着後悔
日期:2017-01-20 15:42
内容:

void widget::udpReceiveInit()
{
udpReceive = new QUdpSocket(this);
udpReceive->abort();
udpReceive->bind(8080, QAbstractSocket::ShareAddress | QAbstractSocket::ReuseAddressHint);
udpReceive->connectToHost("192.168.11.103", 45987);
connect(udpReceive, SIGNAL(readyRead()), this, SLOT(udpReceiveReadData()));
qDebug()


#1 [gasdfrewq 01-20 19:14]
connect有连接方式,你可以看一下文档,默认应该是异步模式,所以要等你信号所在函数执行完成之后才会执行槽函数
#2 回 gasdfrewq 的帖子 [gasdfrewq 01-20 19:19]
gasdfrewq:connect有连接方式,你可以看一下文档,默认应该是异步模式,所以要等你信号所在函数执行完成之后才会执行槽函数 (2017-01-20 19:14) 
另外 你这个只是连接操作,connect和下边的qdebug不会有任何关系,可以把两句看成2个赋值语句。
#3 [rotung 01-21 09:50]
楼上正解。
connect的第五个参数设置成Qt::BlockingQueuedConnection (即阻塞模式),就会等待槽函数执行完成再执行接下来的debug了。
#4 [bran_lee 01-21 10:12]
connect仅仅是连接信号和槽,并不会导致槽函数的调用,不管第5个参数设置的是怎样的连接方式,在信号发起之前或者直接调用槽函数之前,槽函数都不会执行。如果想在槽函数执行完之后执行接下来的debug,要么把代码放进槽函数,要么在槽函数里使用另外一个信号或者直接调用另一个函数。

回复 发表
主题 版块