我是Qt的新手,正在尝试理解以下信号槽连接:
m_networkManager = new QNetworkAccessManager(this);
QNetworkReply *reply = m_networkManager->get(request);
connect(reply, SIGNAL(finished()),this, SLOT(onRequestCompleted()));
为什么我们要在完成请求后连接“完成”信号?…如果链接2中的网络连接比连接3更快,会发生什么情况?
我知道这个代码能够工作。但我想了解为什么。
file
或qrc
URL 方案时;这时没有涉及到网络)。无论如何,在返回事件循环之前,QNR 都不会触发finished()
。在 Qt 中实现这一点的标准方式——作为一般模式,对您的类有用——是调用QMetaObject::invokeMethod(this, "signalName", Qt::QueuedConnection)
。 - peppe