Qt信号槽连接-QNetworkAccessManager

Dag*_*git 5 qt signals qnetworkaccessmanager slot

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

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

为什么我们在 get-request 之后连接“finished”信号?...如果第 2 行中的网络连接在插槽连接(第 3 行)之前执行得更快,会发生什么?

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

Chr*_*ris 6

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