我正在一个 QT 复杂应用程序中工作,该应用程序通过 QT 4.8 插槽为 HTTP/TCP 请求提供服务。
示例模块(QT 插槽):
QString HelloWorld::greet()
{
return "Hello world...";
}
使用这个模块,我们可以通过 HTTP 或 TCP 请求调用我们的服务。
我正在添加一个需要从外部 HTTP 服务器同步检索数据的新模块。为此,我使用了 QEventLoop 和 QNetworkAccessManager。
问题发生在 QEventLoop 的行为上。我已将我的问题降到最低:
bool NewModule::sendRequest()
{
QEventLoop loop;
qDebug() << "BEFORE";
loop.exec();
qDebug() << "AFTER";
}
当我从入口点 X(即执行 HTTP 请求)调用此方法时,事件循环会循环(仅记录“BEFORE”),但是当从入口点 Y(即执行 TCP 请求)调用相同的方法时,事件循环不循环(记录“之前”和“之后”)。
我不知道为什么会发生这种不同的行为。有人可以指出我正确的方向吗?
谢谢