3

我是 Qt 的新手,我试图理解以下信号槽连接:

m_networkManager = new QNetworkAccessManager(this);
QNetworkReply *reply = m_networkManager->get(request);
connect(reply, SIGNAL(finished()),this, SLOT(onRequestCompleted()));

为什么我们在获取请求之后连接“完成”信号?......如果在插槽连接(第 3 行)建立之前第 2 行的网络连接执行得更快,会发生什么?

我知道,这段代码会起作用。但我想了解这怎么可能:)

4

1 回答 1

4

finished() 信号不可能发出,因为您还没有屈服于事件循环。即使以某种方式发送了 get 请求然后又返回,您的代码仍在执行并将继续执行,直到您屈服于事件循环。只有这样,回复对象才有机会实际执行任何操作,例如解析 get 响应并发出相应的信号。

于 2013-05-18T19:02:22.370 回答